Original goals of EECS1012

See EECS1012 original version.

The Medium and the Message

EECS1012 is one of the best courses we offer. It identifies a clear problem; sets a clear goal; and implements through a rich medium. This course is not about the web, not about programming, and not about testing. These are merely the medium through which the course transmits the real message, “computational thinking and scientific soft skills”: to be disciplined; to pay attention to details; to read and parse English sentences; to capture ideas in bullet forms in writing; to think in a process manner; to reason about code; to make a logical argument; to prove something is correct; and so on. Indeed, that is the reason we put it before the old 1020 (whose topics are now covered in 1022): we recognized a problem and planned 1012 as a solution.

It is all about the Instructor

The instructor taps into the richness of the medium to enable the real message come across. CSS exposes declarative thinking, iHTML promotes separation of concerns, javascript or typescript sheds light on both functional and OO seeds and its C syntax eases the transition to Java in the following terms. Moreover, this medium flaunts unparalleled instant visual feedback; it is perceived as highly relevant by incoming students; and it has enough depth to keep advanced students engaged. If I were to teach this course I would write a code fragment and ask students to reason about its functionality; I would ask students to describe in words every piece of code they develop; I would put marks for correctly separating concerns and for recognizing loop invariants.

It is not the Content

Oh the pursuit of panacea: let’s change the language and all will be well; let’s add PHP on the server-side and students will finally get it; let’s add animation and we will engage. This mixing of the medium and the message is the problem. Whatever you intend to do with Python or Haskell or Go you can do it with MatLAB and TypeScript. If you think the Web is too distracting a medium then it is you who emphasized the tool over the substance. Students are drawn by only one thing: assessment. If your assessments put most of the weight on the Web then no wonder students will focus only on that and miss the real message.

Questions on the above goals

Thank you for your detailed and thoughtful email. If I were discussing with you in person, here are the questions and comments I would have (again on behalf of the Science CC).

(1) The Medium and the Message. In my view, 1012 is one of the best courses we offer. It identifies a clear problem; sets a clear goal; and implements through a rich medium. This course is not about the web, not about programming, and not about testing. These are merely the medium through which the course transmits the real message, "computational thinking …

The CC agrees with you strongly on the issue of computational thinking being the main goal. Indeed, the reason for revisiting the content is to ensure that students are being exposed to an adequate amount of computational thinking. We have heard from several instructors and TAs who feel that students get too little exposure to conditionals, loops and basic computational skills given all the preliminary scaffolding (html, css, the DOM, basic understanding of the underlying event-driven programming paradigm etc.) needed to make an engaging web-app.

and scientific soft skills”: to be disciplined; to pay attention to details; to read and parse English sentences; to capture ideas in bullet forms in writing; to think in a process manner; to reason about code; to make a logical argument; to prove something is correct; and so on. Indeed, that is the reason we put it before the old 1020 (whose topics are now covered in 1022): we recognized a problem and planned 1012 as a solution.

Given the large class sizes of today, how and where should these soft skills be assessed? Where and how would you assess "to prove something is correct”?

(2) It is all about the Instructor. The instructor taps into the richness of the medium to enable the real message come across. CSS exposes declarative thinking, iHTML promotes separation of concerns, javascript or typescript sheds light on both functional and OO seeds and its C syntax eases the transition to Java in the following terms.

We feel that OO and functional programming in addition to basic computational thinking (which itself is hard enough to do in an introductory course) makes it too much. What depth of these topics did you have in mind?And where and how should these OO and functional seeds be assessed?

Moreover, this medium flaunts unparalleled instant visual feedback; it is perceived as highly relevant by incoming students; and it has enough depth to keep advanced students engaged. If I were to teach this course I would write a code fragment and ask students to reason about its functionality; I would ask students to describe in words every piece of code they develop; I would put marks for correctly separating concerns and for recognizing loop invariants.

In several recent versions, loops are introduced at about week 5 of the course and loop invariants are not discussed. The later introduction is due to the scaffolding mentioned earlier. In actual assessments, students might write at most two or three loops. We are told that there is not sufficient time to do more.

When did you introduce loops in the versions that you taught? When did you introduce loop invariants? How many loops, loops embedded with conditionals, loops-within-loops did students actually have to write during the course (from scratch) that were assessed? How many procedures (or methods) did students write from scratch that were assessed? How would you assess (for large classes) the following: "I would ask students to describe in words every piece of code they develop; I would put marks for correctly separating concerns”?

(3) It is not the Content. Oh the pursuit of panacea: let’s change the language and all will be well; let’s add PHP on the server-side and students will finally get it; let’s add animation and we will engage. This mixing of the medium and the message is the problem. Whatever you intend to do with Python or Haskell or Go you can do it with MatLAB and TypeScript. If you think the Web is too distracting a medium then it is you who emphasized the tool over the substance. Students are drawn by only one thing: assessment. If your assessments put most of the weight on the Web then no wonder students will focus only on that and miss the real message.

We are under the impression (again based on our conversation with recent instructors and TAs) that there is not enough time to focus on the ``non-web” component – the core computational thinking part. To reiterate, that is the fundamental reason why we are looking into this course.

Finally we have questions about the course description and CLOs. Both mention reasoning about algorithms, test-driven development (the description mentions unit testing). Do you feel these were adequately covered when you taught the course? Is event driven programming appropriate for a first programming course (some recent instructors felt otherwise)? Databases are no longer being covered. Would you say that was an essential part, and if so, can we claim that the courses cover the client-server paradigm (mentioned in the description and CLOs)?