CS32 will challenge you to write scalable and extensible code, which is core to being a great software engineer. Unlike other CS courses, 32 makes you write maintainable code because you have to reuse components from old projects in later ones. You will design the structure of your code base, including backend algorithms, database connections, frontend web interfaces, and more. You will see how your project, along with your skill sets, grow and evolve to become efficient, magnificent, and malleable.
The projects—which include a fully functional autocorrect service and a Google Maps clone with pan and zoom—will help you build a software product that is useful, interactive, and applicable to the real world. The semester then culminates in a final project where you and your group build a full-stack web application, based on an original idea that you are passionate about and proud of.
People come into 32 with very diverse backgrounds. Here are experiences from some former students, to help you make your decision on whether the class is for you.
Former Student Experiences
"I absolutely loved this class. After one semester of hard work, I really felt like I could build web apps quickly and efficiently. Working with a team on the final project was a wonderful experience. While the workload was large, it was definitely worth it. I was able to stay on top of the projects by starting the day they came out and spending time thinking about code structure BEFORE writing up the project."
CS15/16, decided not to take the class:
"I got through the 'Getting Started' part, built the REPL, and started the k-d tree for Stars. I felt comfortable with object-oriented programming from 15/16, and recognized that 32 was useful for learning practical coding skills. However, since it did not go towards my concentration plan (Math/CS), and I already had an internship lined up, I wanted to spend my time doing other things instead."
"This class was incredibly valuable for me after the 17/18 intro sequence because I had the foundation to create and build big, amazing projects (think Sparkzilla and Guizilla), but I was missing the link to make these into real-world applications. 32 gave me all of the skills to take any (tech) project from idea to reality. Even though I didn’t learn every possible part of software development, I learned how to research and figure out things I didn’t know and use my good coding practices to write extensible, smart, readable code.
If you want to go into industry at any point (internship, full-time), I’d highly recommend taking 32 after 17/18 because you’ll be much more confident in the workforce and feel ready to tackle any software problem."
"I actually joined CS32 two days before Stars was due. I used all my late days and spent the next week either at hours or discussing high level concepts with my friend. While I did not write enough tests, my code did pass minimum functionality. I continued with 32, which was so fun. Looking back, that was a courageous decision, and I definitely do not judge students for starting projects a little late."
Former CS32 HTA, took CS19:
"You’ll get a good taste of the entire stack, experience with large code bases, freedom to do something cool as a final project, learn what software engineering is if you actually pay attention to the material, and generally mature as a programmer (if this is something that you need).
However, it’s hard, a huge time commitment, you could theoretically just read “Effective Java,” and the value of the class is hard to put into words.
CS32 is a lot of work. I crawled through 19 and 32 and did below average, and afterwards it's not like I was that far ahead of my peers because people go into 33 with the same baseline knowledge. At that point, you realize that everyone is at the same level."
"Be prepared to put way too many hours into it. As long as you pace yourself though, you'll be fine. The assignments themselves were quite good at teaching us how to structure large projects, and the final project was dope. Building such a large project over an extended period of time was awesome (the team aspect was cool too).
Overall, I thought it was a cool class with cool projects. They were all "full-stack" projects, which was nice because there was a frontend component and not just writing some backend that we couldn’t visualize."
Transfer, no intro:
“I took 33 the semester before 32 so I thought, wow, that was a pain. How much worse could this be? Guess what, yes, it was so much more time consuming than 33. But, I had so much more fun in this class that it was all worth it. I felt a personal sense of ownership over my code, and really enjoyed the process of making it better overtime.”
- One thing which will help immensely with the class is having a familiarity with Java or another object-oriented language. If you’re unsure about your Java skills, we have Boggle to warm-up. Despite students’ differing familiarity with Java initially, everyone usually catches up and are not disadvantaged later on.
- Sometimes the implementation you start with is not the most sustainable and intuitive one. Thus, it’s important to spread out the project across the two weeks, so you get to work on it incrementally and revise your ideas.
- While you have three late days you can use across the three projects, this is not a class you want to do at the last minute.
- Talk to other students (within the collaboration policy)!
- On a similar note, feel free to talk to your TAs! We've all made it through the course and are happy to talk about anything from design to defeating empty editor syndrome.
- Our goal as a staff is to make all students feel like they can be software engineers! The course can be a lot at times, but we are all here for you. We've all scrambled to turn something in at a deadline or been disappointed in a grade. 32 is hard, but we hope you stick with it!
Of course, if there are any other concerns you have about the class, please feel free to stop by hours to talk to one of the TAs. Good luck with the semester!