Category | Difficulty |
---|---|
HW | 7 |
Exams | 8 |
This is the intro class in the software engineering department at CMU. It is a required course for the software engineering minor, and it fulfills the coverage requirement for ECE majors. For many students it's the first realization that software engineering is quite different from just computer programming (15-122). The class focuses on objects (OOP principles), design patterns (how to design good software), and concurrency (basic concurrency in Java). Most programming assignments are quite open ended with design decisions up to the discretion of the student.
The course now introduces both Java and TypeScript, with students now required to use both at least once in the homework assignments. Under the revised curriculum, there is more emphasis on general software engineering principles and less on obscure Java language behavior. The professors teach the course such that the students are exposed to design patterns in more than one language and are able to navigate the pros and cons of using certain design patterns in one language environment as compared to another.
Students are also introduced to modern app architectures that separate frontend processes from backend services. There are also opportunities for students to use modern web application frameworks for homeworks like React.
- HW: Software projects build in difficulty leading up to a larger design project where students build an interactive game. After that projects get easier with one of them being a team project.
- Exams: Midterms can be tough due to either a time crunch or nit-picky grading. Instructors aim for a 65 average on exams. Understanding the ins and outs of Java as well as design patterns will set you up for success.
- Start the homework projects early and design at least part of your solution before coding
- Go to recitation, which have demonstrations that help with homework
- Read the required readings, as they include important material not covered in class (but students are expected to know)
- Large and complex solutions to homework projects allow for more places for points to be taken off, aim for well-designed, simple solutions
- Professors can be sticklers for using Java effectively, use enums!
- The game project seems like a lot but a good design can lead to the game and GUI implementations being easier
- In comparison to the 15 page writeups you may see in other CS classes for projects, the writeups in 17214 are much shorter (5 pages). There are no intended solutions which allows you to design your own software solution
- Homework writeups are deliberately vague, but make sure to follow any requirements that are specified (e.g. using a specific design pattern). Be aware that design is often worth as much as if not more than the functionality of your solution