I graduated this past December. But before that I finished my internship at Amazon!
I think I learned a lot more about what it's like to be a software engineer in big tech. I did get a return offer that just started this week. I can't wait to see how this will go and what it will be like to work full time for the first time.
CS 162 (Intro to Computer Science II): It has a few assignments that were fairly difficult for me because I feel like I didn’t get a strong understanding of object oriented programming from the cc-equivalent class I took for intro to cs I. Be careful of the hidden tests! Just because you pass the visible tests does not mean that you will get 100% on the assignment so go to office hours!
CS 225 (Discrete Mathematics): This class is not easy for most people. Make sure you have reviewed basic algebra if you haven’t done it in a while. Take advantage of office hours and make sure to do the practice tests because they are very similar to the actual tests. The final is proctored, but I had no issues when I took it.
CS 290 (Web Development): This class is nice if you are missing side projects because the final project is a website you can use as a portfolio website. This class also gives you the skills to create a separate portfolio website if you want.
CS 352 (Introduction to Usability Engineering): This is a nice filler elective class unless you are really interested in usability engineering. For me, it was just a nice group project class because my group was very nice and everyone did their work for the most part.
CS 261 (Data Structures): The lectures are very very minimal in this class. I have done a good amount of leetcode so I think I understand the underlying concepts so far. If you do not have any background knowledge on data structures, you will need to find a lot of supplementary material such as Abdul Bari
CS 271 (Computer Architecture & Assembly Language): I'm writing this a few months late, but this class was HARD. I think this class was the one that I went to the most office hours for. I think the best advice I have is to be ready to really get into your code and really understand what's happening with the memory and everything else.
CS 340 (Introduction to Databases): This class is half a group project and then half other quizzes and more "busy work" kind of vibes. I really liked my partner for this class (shoutout to Sonja!) and had a great time learning more web dev and databases work. Honestly not a hard class as the starter code helps a lot. The hardest part was probably our database design, but we definitely made it more complicated than what was required. My only advice for this class and future group work classes is to understand how to work with a shared repository for coding.
CS 361 (Software Engineering I): As many other people have said before, this class is very easy. You could make it more difficult by creating a hard project. But to meet the bare minimum and to understand microservices, the project in this class can be very simple.
CS 362 (Software Engineering II): Even more low maintenance than CS 361. I will say though that the password assignment took a lot of time because of trial and error.
CS 372 (Intro to Computer Networks): This class was a little bit of a mess when I took it with Prof Lewis. The lectures and quizzes weren't difficult, but the socket programming was. It felt like I barely understood what was going on for the project and with many delays, we only had to do two parts. Part 1 was just working around creating a command line interface and using the right loops. Part 2 was much more difficult, but honestly creating it was very rewarding in the end. Don't be afraid to message Prof Lewis on Teams! I think I got very scared of sounding stupid but when I did message him he was super helpful!
CS 325 (Analysis of Algorithms): The midterm was fairly easy because I had studied a lot, and then I bombed the final because I thought I would have enough wiggle room. Lessons learned. The homework in this class is fairly easy especially in the earlier weeks because you get to see a lot of them in the examples. I'd say make sure you do enough example problems to really understand the concepts. Understanding the concepts is by far the hardest part of this class, and you shouldn't hesitate to look up outside resources to further your understanding!
CS 374 (Operating Systems I): It's been too long since I took this class for me to really remember what it was like, but I remember I took it when it was still being revamped. So either way I think my experience wouldn't be too applicable anyway. It was not the most enticing class to me. Most of the assignments were to fill out missing parts of the code. We also had to handwrite essays so that we couldn't just copy and paste from ChatGPT, which I thought was interesting.
CS 475 (Intro to Parallel Programming): This class was honestly very interesting to me. The assignments were similar to operating systems in that you fill out the blanks. I liked the simulation kind of stuff and the lectures were recorded in a way similar to when UCSB went online. The professor screen records a PowerPoint and lectures over it. I also really missed classes like that.
CS 467 (Online Capstone Project): This class is probably as hard or as easy as you want. I got assigned to a random group after selecting which projects I wanted to do most. It went well, and we did create an active website. I do think a lot of people get senioritis in this class though so everyone's motivation is a little low.