Skip to content

Systems and Networking, 7 Semesters

About Me

I am an Illinois resident graduating with a BS in Computer Engineering in Fall 2024 and heading off to industry. I don't have much research experience or interest up my belt, and my schedule is a lot more obscure than others'. I did not immediately know what I wanted to do; I came here wanting to go into software but didn't know which specializations I liked. I chose many different technical electives, resulting in a rather odd schedule. I also struggled with what involvements I wanted to do. The reason for this partly aligned with the fact that I didn't know what specialization I wanted to go into, and also because I am just a person that prioritizes schoolwork too much over personal projects and experience. I was drilled with a "straight-A" mindset throughout high school, and that carried into college. In addition, the COVID pandemic limited my options and diminished my motivation to get involved. It took many semesters for me to decide what I am interested in and how I wanted to get involved with the ECE community. I had two software internships at the same (relatively small) company, which overall wasn't an impressive start to my introduction to industry, but gave me a good basis to show my experience for my eventual full-time position. I took many APs in high school, which allowed me to graduate in 3.5 years. Overall, unlike most students in ECE at UIUC, I didn't immediately know what I wanted to do, resulting in some outcomes that I wish played differently.

Features of this Schedule

As mentioned, this schedule consists of many odd classes and combinations and is different from the "recommended" track for CompEs. The general trend here is that my Fall semesters were very tough, while my Spring semesters were a lot more chill. The takeaway from my schedule is that you should definitely consider what you want to do and do research on courses and schedules before you finalize your semester plan (which is what this wiki is for!). Doing this allows you to make the most of your college learning experience. However, make sure to surround yourself with people who support you and can hang out with you in troubled times too. Hang out at the gym, eat lunch together, or just go for a walk every now and then. Spend the first year of your college career forming a close friend group and find people with shared interests. Evaluate your overall capability from your first two semesters and try to take as many courses as you can within reasonable limits. Don't overstretch yourself too much, but also don't be afraid to take tougher schedules. You can always drop a class before the deadline.

Schedule

AP Credits and Transfer Credits

Course Name Credit Hours
RHET105 - Writing and Research 4
CS101 - Intro Computing: Engrg & Sci 3
CS102 - Little Bits to Big Ideas 4
CS125 - Introduction to Computer Science 4
MATH220 - Calculus I 5
MATH231 - Calculus II 3
MATH241 - Calculus III 4
MATH285 - Intro Differential Equations 3
PHYS211 - University Physics: Mechanics 4
PHYS212 - University Physics: Electricity & Magnetism 4
PSYC100 - Intro Psych 4
MUS104 - Music Theory and Practice I 2
GEOG1-- 3
HIST1-- 3
HIST1-- 3
Total 53

I managed to get the sufficient scores to earn credit for Calculus I and II and for Physics Mechanics and E&M. I took AP Calculus BC in my junior year of high school, and my high school had a dual-credit program with Eastern Illinois University, allowing me to take Calc III in the fall of my senior year and Differential Equations in the spring of my senior year and transfer the credit to UIUC. This saved me a ton of time in taking the foundational mathematics classes and allowed me to finish up my gen-eds quickly. I also took AP CSA and AP CSP and a Java class at a community college (which got me credit for CS125) and AP PSYCH and AP Music Theory, which earned me some gen-ed credit. I'm grateful that I came in with so many credits. This helped in graduating a semester early.

1st Semester, Freshman Year, Fall 2021

Course Name Credit Hours
ECE120 - Introduction to Computing 4
REL104 - Asian Mythology 3
PHIL104 - Intro to Ethics 3
ENG100 - Engineering Orientation 0
MATH257 - Linear Algebra with Computational Applications 3
MUSC478 - Illini Strings 1
Total 14

This semester didn't feel like a semester for computer engineering; it felt like another high school semester. I had originally wanted to take PHYS213 and PHYS214 in place of REL104, but the seats filled up very quickly, and having finished most of my math requirements except for MATH257 and already having registered for it, I decided to take another gen-ed. I didn't want to take CS173 because I saw that it was typically taken in sophomore fall semesters, so I worried it was a stretch for me, but I wish I had just taken it then, especially since I had CS125, which was a valid prerequisite for the course. The gen-eds I took were much harder than what gen-eds should be; they were a lot of boring reading and essay-writing, and I had to put a lot of time in these gen-eds. ECE120 was a new take on computing for me, because the main computing experience I had from high school was mobile app development and AP CSA, and I never studied anything as low-level as digital logic and hardware design. The course was easy for me in the first half but got much harder in the second half. I ultimately choked on the third midterm and the final exam, which sunk me from an A to an A-. I generally didn't like the class due to not being able to understand the professor's lectures and because of my sour experience on the exams. Overall, this semester was a lot harder than it should've been from a glance, because my gen-eds were a lot of work. Thankfully, this was at a time when I actually cared about gen-eds, so I passed those courses with flying colors and got my Humanities and Advanced Composition requirements out of the way. I became involved with Illini Ridgebacks Quidditch (later renamed Quadball), which was a super fun sport, and I would stick with the team for the next two years. I also met my first college friends in ENG100, which cemented my friend group.

Tips

Pace out your gen-eds instead of trying to get them out of the way before technical classes. Gen-eds can be taken at anytime without prerequisite requirements, but technical classes have a prerequisite sequence to them, and delaying them can delay other courses that you can unlock. Also, try to get involved in something that sounds remotely interesting to you and would be good to mention in an interview or your resume. Better yet, try to stick with it and/or join the same RSO/club as your friends. I tried to join SIGMusic and SIGGameBuilders my freshman year, but I didn't do anything with those clubs. I also wished I joined the same clubs as my friends, because our time to hang out together became limited in our later semesters. I was also unable to relate to them over their involvements since we were doing different activities. Finding what you enjoy and appreciate can take time, and it's good to start early but also ok if you find you don't enjoy it. Join a non-technical RSO too. You'll find yourself making friends with people in different majors and becoming well-versed. I don't regret joining the Illini Ridgebacks, but it might have been interesting to join CLAID too, as I am a Chinese-American.

2nd Semester, Freshman Year, Spring 2022

Course Name Credit Hours
ECE110 - Introduction to Electronics 3
ECE220 - Computer Systems & Programming 4
PHYS213 - University Physics: Thermal Physics 2
PHYS214 - University Physics: Quantum Physics 2
PSYC144 - Stereotypes, Prejudice, and Discrimination 3
LEAD140 - Harnessing your Interpersonal Intelligence 2
Total 16

This semester was a lot more chill in my opinion. I was finally able to register for physics and get those requirements out of the way. Physics was annoying and a fair bit of work, but not too bad. I did very well in PHYS213 (somehow) despite hating chemistry. ECE220 was a course that resonated very well with me. The course clicked with me and I enjoyed every aspect of the course, and it taught me the most fundamentals in computing more than any other introductory course. It would also set the precursor for my involvement here at UIUC. ECE110 was not such a great class. I found it very tedious due to the unnecessary strictness of lab assignments, and I felt like the homeworks and overall class didn't teach me much that was useful or interesting. I took PSYC144, which was a much easier/interesting gen-ed. LEAD140 was a class I took because I was interested in helping with the New Student and Family Programs, which is basically the group that sets up the Welcome Week events for freshmen. Looking back, it was a waste of time, and I didn't really grow as a leader or engineer as an Orientation Leader. Overall, this was probably the chillest semester in my history at UIUC. I spent many fun hours with my friends studying together at Nugent Hall, cooking pasta in the PAR kitchenettes, going out to eat, or working out at the ARC or FAR gym.

Tips

Again, I wish I had taken CS173 this semester. Physics isn't useful and doesn't lead to anything unless you want to take semiconductors. I could've taken CS225 much earlier. Whatever happens during your freshman year, make the most of the free time that you have for your first year and spend as much time with your friends as you can. You will eventually understand that the "good days" are during freshman year, and you will have to worry the least about internships, deadlines, assignments, etc. Other than that, most of the tips I would takeaway from this semester are the same as the previous semester: Try to get involved and figure out what you want to do. Also take some time to craft a resume and apply to internships; however, if you feel like you still need to adjust to college life, that is ok too.

3rd Semester, Sophomore Year, Fall 2022

Course Name Credit Hours
ECE210 - Analog Signal Processing 4
ECE385 - Digital Systems Laboratory 3
CS173 - Discrete Structures 3
RST242 - Nature and American Culture 3
Total 13

This semester was a step-up for me. I took ECE385 super early because my friend was signed up for it and wanted to get the harder courses out of the way, so I decided to do the same. A lot of my friends also took CS225 this semester, leaving me as the only one still taking CS173. It was a tough semester with 210 and 385. ECE210 wasn't that bad; as long as you kept up with lectures and content, the class is decently manageable and becomes what you expect of a 200-level course. I felt that the labs were much better structured than 110 and more intriguing. All of my friends were taking the class, so we had many fun study sessions together. This was also one of the largest rosters I've seen, being a class uniting both EEs and CEs, so I met a lot more people in this semester from 210. My ranking of the lower-level classes from favorite to least favorite would have to be 220 > 210 > 120 > 110. ECE385 was not that fun for me. I found the lectures very boring and ended up distracted or dozing off whenever I attended them. It also hurt that I had a macbook, meaning that the Quartus software needed for the labs was not compatible with my laptop and I had to rely on my partner's laptop, so he did most of the SystemVerilog coding and I didn't do much of it. I didn't pay attention much to how SystemVerilog is translated to digital logic and hardware modules, which really hurt me on some quizzes. I did have some usefulness in writing the lab reports, but my partner expressed considerable frustration with me at times, and I felt bad about not putting enough work. The class was just tedious and time-consuming in my opinion, though the final project was pretty cool. Looking back, ECE385 wasn't a particularly bad class; but I didn't put my fair share of work in the class and got slightly carried. I learned from my mistakes and vowed to pay more attention in ECE391. CS173 was a slightly annoying class, but not so terrible. I found that I was good with proofs and the math-basis behind the class, and I generally did well on examlets. RST242 was light work, and it was the last gen-ed I needed to take. Outside of coursework, I also tried to get involved with ACM ICPC, which is similar to LeetCode and interview problems. I also tried to get involved with EOS (Engineering Outreach Society), but that didn't last long either. Overall, it was not a terrible semester, and I think it would've been manageable if I paid better attention in 385.

Tips

This is when you really want to think about building your resume and choosing your specializations. Taking ECE385 this early is a good choice in my opinion, because it introduces you to the realm of hardware/VLSI design, FPGAs, and CPU debugging. It's a good idea to take CS225, ECE385, and ECE210 all during your sophomore year (not necessarily all in the same semester), as these courses are the basis for EE specializations, software, or VLSI. After taking all of these classes, you will have been exposed to different specializations and realize what you enjoy. If you haven't started applying to companies and creating a resume, now is the time. Attend tech talks and career fairs, create LinkedIn and Handshake profiles, and practice interview questions. I would highly recommend learning LaTex and using it to create your resume rather than Google Docs or Microsoft Word. This can help you stand out to recruiters. I didn't learn this fact until my senior year.

4th Semester, Sophomore Year, Spring 2023

My first semester that was all-technicals, but honestly it was a much chiller semester than the last one. I didn't have any lab-demanding classes like 385. Most of my classes were MP or homework-based, which I found to be a lot more satisfying than the previous semester. I decided not to take ECE391 this semester as I wanted a chiller schedule after 385. I also enjoyed nearly all of my classes, which was unusual, because it seems that every semester has a tough/terrible class. This was the semester that I initiated into Tau Beta Pi and HKN. Because I had a chill schedule, I had plenty of time to put in the work into initiating into these societies. I also put in more work into applying for internships, and after a short interview, I eventually got an offer for a software role at a company close to home! I took CS225 as it was naturally the next step for me. It wasn't a necessarily hard class, and a lot of the content I probably could've learned on my own if I just took the class asynchronously, but it did help me a lot better in C++ and programming. I also needed other technical electives to fill my schedule, so I decided to take ECE310 as 210 inspired me to consider specializing in signal processing (this would ultimately not work out.). ECE313 was a tough class, but it might have been worse if it had been coordinated by a different professor. I had an excellent professor for ECE313 and frequented the same office hours every week by the same (very good) TA, which helped me a great deal in the class. I took CS357 as it was the lowest-level CS elective I could take that didn't have CS225 as a prerequisite. It was not a bad class and taught linear algebra much better than MATH257 ever could. I became stronger at linear algebra and related concepts, and this helped me develop a better mathematical foundation for a few other classes I would eventually take. Looking back, I do wish I could've taken either ECE391 or ECE374 this semester, which would've knocked out one of the big 4, and it ties back to how I wish I took CS173 earlier; I could've taken ECE374 this semester, which a few of my friends were taking directly after 225. Regardless, because I took 385 so early, taking an "easy" semester didn't set me back and I was still on track to graduate in 3.5 years.

Tips

Not much to say, but it's not a bad idea to have a "break semester" at some point like this one. I would not put it as early as sophomore year though; I would wait until you get 391 and 385 out of the way.

5th Semester, Junior Year, Fall 2023

Course Name Credit Hours
ECE417 - Multimedia Signal Processing 4
ECE391 - Computer Systems Engineering 4
ECE365 - Data Science & Engineering 3
FIN230 - Introduction to Insurance 3
Total 14

I took on two jobs this semester: Engineering Learning Assistant (ELA) and ECE220 CA. This was an exciting opportunity for me, as my friend became ECE385 CA the previous semester and I wanted to get some CA and mentorship experience. Being an ELA was a fun, but semi-stressful experience because you have to prepare materials/lecture for classes, which sometimes means improvising on the syllabus. You also have to coordinate mentor meetings and advising with your students and grade assignments. It is fulfilling to mentor freshmen and help them feel welcomed in the UIUC ECE department, but can be stressful. I also greatly enjoyed CAing for ECE220; I enjoyed the course when I took it in Spring 2022 and now had the chance to help other students with the course. Most of the students were EEs coming off of 120, so I was able to brush up on my assembly and knowledge of the run-time-stack (also good preparation for 391) and use my newfound knowledge from CS225. I met many students in office hours and got to know a lot of people outside of my year. Knowing that ECE391 was going to be a time sink, I was afraid to take another technical class, so I decided to take a life-skills class rather than another technical -- hence why I took FIN230 to learn about insurance. I also chose to take ECE417 because it had "signal processing" in the name after having taken ECE310. I also decided to take ECE365 because I wanted to delve into data science and ML. This is where the moral of my schedule comes in -- Be wary about new courses/offerings. Both 417 and 365 were fall-only courses with a history of not very high enrollment, and both classes were not what I thought they would be. 417 was more like a very accelerated AI/ML class with a lot of heavy math and probability not much signal processing. 417 touches on things like Convolutional Neural Networks, Gaussians, voice encoding, and long/short-term memory. It is a class related to media processing with AI. It was a cool class in theory, but way too accelerated for me to actually learn anything. As for 365, it was a poorly run class with no textbook or syllabus and very inconsistent labs/quizzes. These technical electives were nevertheless not very time-consuming, allowing me to put a decent effort into ECE391.

Tips

As everyone says, have a good group for ECE391. This was the second-to-last semester before the change to RISC-V and groups of 3; we had the goat professors Zbigniew Kalbarczyk and Steven Lumetta with x86 assembly rather than RISC-V. ECE391 was another course that helped me realize my interests, but it is a huge commitment, so I wouldn't worry about taking it super early. My group consisted of my partner for 385 and two other very smart guys that I met in CS173 and CS225, so we had a very good team. I did my portion of the work this time, helping in a major checkpoint and also writing some extra credit, which helped us win 3rd place in the OS competition! I do wish that I took more useful classes with 391 such as CS411. Unfortunately, I would repeat this pattern of taking hit-or-miss classes next semester as well.

6th Semester, Junior Year, Spring 2024

I decided to take ECE374 instead of ECE411 as I was excited to take 374 and I like algorithms. I took ECE448 partly because of a slight interest in AI/ML and because I knew someone else registered for the class and I wanted to take it with them. ECE434 sounded interesting to me when I was browsing courses with ECE391 as a prerequisite. The original name of the class was "Mobile Computing and Application", so I thought it was a course about mobile devices and how the OSes of mobile devices are constructed, but I was wrong. This is another hit/miss class I ended up taking, and I wish I chose something like ECE428 or ECE422 instead. ECE490 was a class I didn't really have a motive for taking, but it was fine. I had enough mathematical basis and aptitude for the class, and I did fine. I decided to take KIN103 just to have a fun sports class to do on the side. Not much to say, but it was fun. My hardest classes were definitely ECE374 and ECE434 for this semester. This was a not bad schedule compared to the previous one; again my courses were MP-based and homework-based and not very lab-demanding, so it was a easier schedule, though not as easy as Spring 2023. I continued ECE220 CA during this time and became much more involved with the class, holding more office hours and lab hours and also answering questions on discord. It was one of the better semesters of CAing ECE220; I saw a lot of freshies in office hours and got to know a few more faces; some of them were even my students for ENG100 the previous fall :). I actually had applied to ECE391 CA over the winter break but sadly did not get in :(. I also took on ECE311 grader at that time just for an extra bit of money, though it wasn't particularly enjoyable. I also became MUCH more involved in HKN; I contributed to some worksheets during student services committee, ran course advising for some shifts and helped lead every ECE220 review session, which honestly truly helped me become a better presenter. I frequented the RSO room and social events very often and connected better with existing members and initiates.

Tips

ECE374 is NOT as bad a course as it is hyped to be. It's very different from the Big 4 (385, 391, 374, 411) in that it's conceptually hard rather than debugging/time-consuming. It's the easiest of the Big 4 in my opinion, and it can even be combined with classes like ECE391 or ECE411 (some of my friends were taking 374 AND 411 during this semester), at least I can say this for the B section; A section might be slightly more difficult, but the workload should still be manageable. I think the main problem with 374 is that most people skip lectures and labs and don't consistently stay on top of the material, which leads to most of them cramming during exam weeks and getting cooked on the exams. Aside from keeping up with material, USE the provided cheatsheet on exams. I also want to mention that my semester for 374 was an "interesting one" (for lack of better words) as we had the a new professor from usual semesters. However, after taking the class with the new professor and later CAing the class with Prof. Kani (in Fall 2024), I can assure that it ultimately doesn't matter in the grand scheme of things which professor teaches the course; the grading policy, curves, and workload is the same, and it just matters how much effort you put into it. On another note, take it from me to be careful about hit/miss courses; ECE434 was one of them. It wasn't useless per se, but I already had a lot of linear algebra courses up my belt and wanted to take a systems course for once, so this one was disappointing. It's worth mentioning that this is where I found my true calling with HKN; I truly felt like I belonged here and could contribute meaningful work. It took 6 semesters for me to find a source of involvement, so do keep in mind that it takes time to settle in, and there's no shame if it is a long time. But of course, take my advice and try many new things to see what you like -- and you should definitely consider HKN as one of them :).

7th Semester, Senior Year, Fall 2024

Absolutely stretched my limits; by far the worst schedule I've ever taken and the busiest semester I've ever had. I continued as ECE220 CA for one last semester, and I also took on ECE374 CA this semester for a change, which I was excited to do because some of my peers were taking the class and I wanted to CA one of the big 4. Most of all, I became part of the HKN board this semester, so I had a lot of responsibilities this semester. Because of my rough schedule and involvements, I did not continue as ELA for this fall. ECE411 was one of the worst classes I've ever taken in terms of pain and suffering. I took the class over ECE445 for a few reasons; one of my friends recommended it, and I thought it'd be good to have some knowledge of hardware and how software runs on hardware, and I hadn't any PCB design or project experience, so I thought the lecture-styled ECE411 would be better. The content was interesting, but it didn't really compensate for the terrible demand and difficulty on the class. At times I felt depressed from the class, especially during the final two weeks of class. I think in recent semesters, the class has been made too hard with the demands of the final MP and it should be toned down a bit. The course was way too unpredictable due to the leaderboard being released too late, the numerous MP patches we had to pull from git, and the fast-paced breakdown of the MPs. Honestly, I think this entire semester would've been much more reasonable to handle if I took a different class than 411, but it is what it is. ECE408 was a much more interesting class for me; despite it being similar in content to ECE411; I found the project and labs to be more reasonable but also a good exposure to CUDA programming and thinking from the perspective of a GPU and how threads are organized. It also helped me think about how to optimize hardware from the perspective of software (e.g, coalescing memory accessess when indexing arrays), and I overall found the course much more fun, reasonable, and motivating. ECE438 was also a good class, as I became interested in networking and systems after ECE391, but unfortunately I didn't have a lot of time to do studying or learn as much from the class due to the demand of my other two classes. Still it was worth taking; I just wish I had taken it during a lighter semester. These are two classes I would definitely recommend taking. I probably should've taken lighter classes with ECE411, but I wanted to take hit classes for a change over potential hit/miss classes. I was miserable during my classes, but I had a lot of fun outside of my classes. Because I was on the HKN board, I became more involved with HKN than ever, being present at many events and getting to know many initiates. Many of them were also taking ECE220, so I saw a lot of new faces in two different places. I had a lot of fun CAing ECE220 and 374 this semester.

Tips

ECE411 should be taken with VERY light classes, or with 374 and nothing else so you can get your required classes out of the way and leave room for an actual "fun" semester with just technical electives. Leave time during your 7th or 8th semesters for a chill semester to allow time to apply for jobs or colleges if you're considering grad school (should probably take a chill fall semester if you plan grad school). Take advantage of the things you know that you enjoy (which you should've had 6 or 7 semesters to hopefully figure out) and live through them to the fullest in your last year of undergrad. You might not get to experience them again, unless you pursue a Master's here at UIUC, but you also might not have time for that. Even if it's not a society or RSO either, just relax. Have fun. Spend time with your friends. Enjoy the rest of your last semester(s) at UIUC and give yourself a pat on the back for your hard work. I definitely have some regrets, but I had fun too even during my last semester outside of classes.

I am transitioning into a full-time role with server infrastructure and software hosting in January 2025.