This is my course review for CSE 142 (Computer Programming I) at the University of Washington. I took the course in autumn 2014 with Stuart Reges.
Since I had already had a significant amount of experience programming in Python prior to the course, CSE 142 ended up mostly being a time for me to learn the syntax of Java. To be sure, UW does offer CSE 143X, which is an accelerated one-quarter course that covers the content of both 142 and 143. However, I decided to take 142 and 143 for two reasons: (1) although 143X claims to be curved similarly to 142 and 143—so that one is not disadvantaged by taking a course with more experienced students—I didn’t have any evidence that this was the case (i.e. since I didn’t know others who had taken 143X, I would essentially be blindly trusting the computer science department); (2) CSE 143X was offered in the winter quarter, so I would have had to find another course to take for autumn (keep in mind that CSE 143X was only announced after the regular registration season, so the courses I would have wanted to take probably would have been taken—though I did not check).
The lectures seemed to be targeted toward people who had no prior programming experience, and in general those wanting in algorithmic thinking. I don’t think I benefited very much from attending lectures, but Reges did point out some subtleties of Java’s syntax, which may have been hard to pick up on my own.
I think the lectures allowed me to be lazy: instead of having to look through the textbook or slides for the course, I could just sit in the lecture hall and have all the information given to me. Since CSE 142 was one of the earlier classes for me, lectures also gave me a good routine of waking up early and walking down to class.
On most days (especially later in the quarter) I just sat in the back (where Reges tells people to go if they don’t want to listen to the lecture) and read from a book or some articles, peeking up infrequently to see if I can still understand everything on the screen.
Quiz sections were small-group meetings (of about 20 people) where we just worked on some practice programming problems led by a TA. (Each quiz section had a single TA for the quarter.) I don’t think I got much out of the quiz sections.
Chapters corresponding to each lecture were posted on the course calendar, but I never bothered to. The impression I got was that nobody else was really keeping up with the readings either. This trend is understandable, considering that Reges himself wrote the textbook, and the lectures and chapters seem to overlap significantly.
The homework assignments were fairly straightforward and didn’t require novel thinking. Even for the assignments considered most “challenging” by Reges, there was always an obvious way to go about them. I think the assignments took a few hours each at most.
One thing that did not sit well with me was that the whole course was taught using jGRASP, which is non-free software. As I found out in CSE 390, Reges himself uses Emacs, so the decision to use jGRASP seems to rely entirely on pedagogical reasons. I realize that jGRASP is very easy to use, but not even hinting at the complexities of software licensing—and instead encouraging everyone to use non-free software—is suspicious. (For myself, I just used Vim with javac.)