4 ms·
Today's CompSci programs consist of an unholy melange of Software Engineering and theory. Both aspects are rather messed up. The Software Engineering part is d
by zeteo 15y ago
Today's CompSci programs consist of an unholy melange of Software Engineering and theory. Both aspects are rather messed up.
The Software Engineering part is done badly because the slope is too abrupt and ends too quickly. The Java-based curriculum invariably ends up teaching OOP concepts within weeks (if not to start with) to someone with no concept of program flow, variables and functions. From my experience as a TA, I'd say 90% of students who haven't programmed before end up utterly confused about the order of execution of the various bits of code in a simple Java program with 3-4 classes.
The few people who survive this abrupt slope with an intact desire to learn more CompSci find that the slope ends too quickly. There is no further discussion of issues that are crucial for industrial Software Engineering: debugging techniques, version control, code repositories. Instead, the sophomore abruptly has to choose between a rock and a hard place: either a course in C, leading to an honours thesis in Systems; or some math-y courses leading to Theory.
The C course is a frustrating experience, requiring the student to un-learn a lot of the concepts learned in the Java intro courses and to learn instead to tread carefully on a landscape suddenly filled with inexplicable bugs. But this is actually the more accessible course, as the theory courses require a mathematical ability that the majority of potential CS majors simply don't have (or even had any inkling that it was required).
I think any intro course should begin with an explanation of very simple architecture concepts (program counter, memory, hard disk) and spend a good amount of time drilling the basic concepts (variables, loops, function parameters, function return values) and basic debugging techniques. In the second half of the semester, while the students work on a large project to practice these skills, spend the lectures to give them a broad survey of the major: architecture, algorithms, programming languages, OS, theory of computation.
- calpaterson 15y ago> The Software Engineering part is done badly because the slope is too abrupt and ends too quickly. The Java-based curriculum invariably ends up teaching OOP concepts within weeks (if not to start with) to someone with no concept of program flow, variables and functions. From my experience as a TA, I'd say 90% of students who haven't programmed before end up utterly confused about the order of execution of the various bits of code in a simple Java program with 3-4 classes. This perfectly mirrors my experience.