11

I would like to refute my hypothesis that all safety-critical software (that is, software where errors can have catastrophical consequences, either in terms of human lives or high material costs) is a real-time software (where tasks have timing constraints) by finding interesting counterexamples: systems without timing constraints which are safety-critical. ...


9

Your question takes a very narrow and untrue view of what computer science is. Computer science doesn't "assume a static problem" -- there is an entire subfield studying Online Algorithms, which take input problems piece-by-piece, as just one example. Computer science is the system of methods for analyzing computing problems (i.e., making efficient ...


8

The main reason why computers are complicated is because they are really optimized to deliver the maximum speed. There are a lot of places in a computer where information is stored: processor registers: here the speed of memorization is really high, but this memory is very expensive; random access memory: slower and cheaper then processor registers, but ...


8

Specifically on productivity, Hanenberg has investigated the impact in development time when the same task was implemented in Java (static) vs Groovy (dynamic). Their results were described in the following paper: Static vs. dynamic type systems: an empirical study about the relationship between type casts and development time, 2011. There's also been ...


7

Architecture generally refers to a design-level structure or organization for an entire system. Platform generally refers to something (an operating system, a library, a programming language, a programming environment) which you can build other things on.


6

Since you are asking on CS.SE rather than StackOverflow, I presume you are looking for a principled look at the fundamental underlying problem and principled solutions to the general problem, from a scientific/conceptual perspective (as opposed to a "quick hack" or a engineering solution that'll work for your specific situation). So, that's what I'll try to ...


6

The last time somebody asked this question, I replied: why not just use an existing language? What you have right now is an API. You can provide a library in which your commands are function calls, or method calls, or whatever suits you. This saves you from having to design and implement a language, and it saves your users from having to learn yet another ...


5

This is actually an excellent question. The fast answer is that we are not good enough yet to make them simple. As Pascal said in his 16th Provincial Letter : "Je n'ai fait celle-ci plus longue que parce que je n'ai pas eu le loisir de la faire plus court". In English: "I wrote a longer letter, because I did not have time to make it shorter". Similarly, ...


5

"Is there any scientific research or paper that suggests a certain number of evaluators for such a rather theoretical approach?" There is a statistical method to calculate the correct sample size for an experiment. This method is called a "power analysis" [1]. It calculates the minimum sample size needed to verify that an experiment's results are ...


5

"Underlying this fact is that all [programming] languages serve the same purpose: to turn human thoughts into the 1’s and 0’s that the computer understands." That statement is clearly wrong. Malbolge, for instance, was specifically designed to be counter-intuitive. The purpose of all soucre code written by developers is, that other human beings are able ...


4

There was a presentation on ICSE 2011, at the New Ideas and Emerging Results track, entitled "How do programmers ask and answer questions on the web?". They only had initial results, but they sounded very interesting and promising. Maybe you could contact the authors if you need more info (they're from the Dept. of Comput. Science, University of Victoria, ...


4

Your best bet is to go with major open source projects (Apache, Open Office, Mozilla, MySql, perhaps Linux). Since these are done by large online communities all communication occurs online through bug databases and forums or mailing lists (which are usually archived). If they do code reviews they may be archived with a tool like Review Board or will be ...


4

The important thing is to understand that real-time software is a strict subset of "software with timing constraints". If you want to be nitpicky about it, all software has timing constraints: if the algorithm is correct, but it's not gonna give you the correct answer until one billion years from now, then it's not very useful. So one can make a quite ...


4

Your question seems to be based on the misunderstanding that software development = computer science. They are not the same thing. Your questions starts out asking about software development, but then ends by asking about the roots and scientific aspects thereof, which brings you to computer science, so it is not entirely clear what you want. If you want ...


4

No, not all safety-critical software is real-time. Suppose you have an industrial batch process that generates acidic waste, which must be neutralized by being mixed with an appropriate amount of alkali before being poured down the drain. It's important to use the right amount of alkali: if you use too little, your waste is still acidic; if you use too ...


4

There is no universal objective answer to the question of how to tell what counts as theory and what counts as practice, or what counts as science vs engineering; the precise dividing line between theory and practice, or science and engineering, is subjective and a matter of opinion. Those terms are not precisely defined -- they are fuzzy, subjective terms. ...


4

Generally speaking, if you want to present some applications of the theory, it's more effective to start with applications first and teach the theory that's needed for that application, rather than select a collection of theory and then search around for some application of it. So, one way to approach your question is to ask why the department wants ...


4

The areas of set theory you refer to are generally rather abstract and don't seem to have a lot of applications. Also, the concept of "application" is different in math than in CS. Anyway, though applied CS is so vast now that even very abstract concepts can find applications somewhere. Here is one possible link. This paper Tree Automata Make Ordinal ...


4

Tests can be written based on either a formal spec or an informal spec. Verification always requires a formal specification. Formal verification might be manual or automated, or some combination of the two; it depends what techniques you use. Typically, it's hard to do completely automatic verification -- it's more usual that verification systems automate ...


4

What is a high level language? What is an embedded system? Once upon a time C was a high level language and a Raspberry Pi would have changed the outcome of major wars, now almost every microcontroller can be programmed with C and we use Pis that run a full-blown desktop OS to turn servo motors. Let's say a high level language is a language that has strong ...


4

There are many pieces of software involved in rendering an "A" when you type it in to a program like a text editor. First, the key press is handled by the hardware of the keyboard, which sends a signal to the OS's keyboard driver. This is where stuff like the state of the shift key and caps lock get noted (though the information about which modifier keys ...


3

This seems to me (as to some commenters) to be simply dynamic scoping. It was used often in Lisp to change the behavior of system functions to get some extra features, or perform hidden actions such as monitoring of programs. The cost is indeed that large programs may be difficult to manage and maintain. Since then, there was a long battle between static ...


3

See the Voice transformation project from the The Center for Speech Technology Research at the University of Edinburgh. Thesis: Transforming Voice Quality and Intonation by Ben Gillet. It doesn't do exactly what you are asking, but something similar; it tries to change the voice of a recording to another voice. Abstract: Voice transformation is the process ...


3

There are many different kinds of control-flow constructs that only map to "structured programming" (tree decomposition) constructs when you add extra data variables and extra tests. continue is usually okay (as long as its not nested any deeper), but break is one of the hard ones. Another relatively painful case is short-circuit conditional evaluation. A ...


3

Expanding Pradhyuman's answer. From Wikipedia: Software Engineering can be divided into ten subdisciplines that correspond to distinct phases of the software development process. They are: Software requirements: The elicitation, analysis, specification, and validation of requirements for software. Software design: The process of defining the architecture, ...


3

The conference paper "StackOverflow and GitHub: associations between software development and crowdsourced knowledge" looked at the correlation between activity on StackOverflow and GitHub for users who have accounts on both. From the abstract: In this paper we investigate the interplay between StackOverflow activities and the development process, ...


3

I do not know about publicly available tools to do it, but I did fair amount of diff related algorithms and one tool to check similarities between codes. There are some basics to start with: 0) diff operates well on similar changed texts and falls into worst case when they are different. 1) Tools to check similarities on codes that I have seen, used and ...


3

The abstract conclusion is not really that "some languages are better than others" but that "some languages are better than others for some purposes". Different languages are somewhat like species in evolutionary biology. They have evolved to fill certain niches. There are many evolutionary niches. They have strengths and weaknesses in different areas. ...


3

The intel line of processors (8086, x86) have backwards compatible instruction sets (i.e., unless you tell an x86 otherwise, it will behave like a 8086, and the 8086 instructions (and registers, etc) are just a subset of the x86 ones. Ditto for AMD64 (i.e., x86_64), they are able to run x86 software as is. This for pragmatic compatibility reasons: buying the ...


3

We already have the formalization of norms I don't think we do. Norms are written in natural languages (e.g. English). And truly understanding text written in a natural language (even a subset of it, such as the one used to write norms) is still not something that can be done. Even if you solved that, business policies and rules usually aren't detailed ...


Only top voted, non community-wiki answers of a minimum length are eligible