Software Construction
“The relationship between me and you, the class is zero-to-many, not one-to-many, since you could all get up and walk out right now'”
Text: (none)
Prof: Dr. Paul Carter
Dr Carter is an efficient and articulate prof. He also has a cool British accent. He is really good at balancing questions with getting ahead in the material. He also tries to give reasons for each structure or process, so that our conceptual understanding is good. He seemed omni-present on Piazza, constantly answering concerns, which was really helpful. He once made an error in the time the class ends. When people got up and started going to their next class, he started pleading them to stay, and not give up on his class. Poor guy!
Difficulty
In the first class we dived straight into the rather large code-base of a Space Invaders game. After guiding us through seemingly incomprehensible mazes of Java code, Paul Carter demoed a neat Android app for GPS with the London Underground. Then he informs us we have till the end of the course to submit that app to him. Panic ensues…
It wasn’t that bad. The first few weeks of the course were the worst, because I had no idea what I was doing. The project is fine (he gives you a skeleton) as long as you keep a cool head if things aren’t working out, and manage your time well. The midterm was just like the practice. The final was surprisingly heavy on implementation, but manageable. Labs and assignments are pretty reasonable and count for jokes.
Key Concepts
Object-oriented design/programming
Programming models
Building robust classes/methods
Design Patterns
How to learn a new language
Hard Concepts
UML Sequence Diagram: Wasn’t covered in much depth at a time when we were still grappling with Java. Lots of details so needs a lot of practice.
Exception Handling: Exceptions are one thing that is pretty new from 110. Its important to learn the rules for throwing, catching and testing exceptions before implementing, because they are a bit different.
Observer Pattern: Sometimes its not clear which class to observe, but the rule of thumb is observe the ‘lowest’ possible class. Lots of little things as well, so make sure to have a mental check-list of all the steps in this pattern.
Iterator Pattern: Implementing a new Iterator can be pretty meta. Not to complex if you understand the basic purpose of an Iterator.
Parsing: Parsing can be a pain. It is really painstaking. Reading examples of parsing, reading the input file carefully and being painstaking are key factors in success.
Conclusion
Really useful course. First course where I actually got an idea of the job of a Software Developer. The excitement surrounding the project was also pretty fun.