UIUC MCS - CS 427 Review - Software Engineering
Tags: university, school, review, softwareengineering
Published: 2022-12-11 04:39:17

---
title: UIUC MCS - CS 427 Review - Software Engineering
published: true
date: 2022-12-11 04:29:19 UTC
tags: university, school, review, softwareengineering
canonical_url: https://blog.seancoughlin.me/uiuc-mcs-cs-427-review-software-engineering
---

## Overview

- **TLDR:** For undergrads or those changing professions to software engineering this could be a good (even challenging) course. If you are already a software engineer, this class won't be worth your time.

- **Difficulty:** Easy

- **Opinion:** Disliked

- **Weekly workload:** 6 hours

- **Semester taken:** Fall 2022

## Class Content

### Lecture Content

The course was a survey of broad software engineering principles. The lectures covered software engineering and methodologies, requirements designing, a few architecture paradigms, object-oriented design, testing, debugging, and maintenance.

The only topics that were particularly in-depth were object-oriented design and testing because those each had two weeks' worth of lectures. There were also several optional interviews to watch with industry professionals. Each week had a corresponding for-credit quiz with unlimited attempts.

### MPs

There are five machine problems. None of the assignments took me longer than two to three hours, and the last one I completed in less than an hour. The MPs had been recently redesigned and tied together nicely. Each one covered a different course topic in the [jsoup](https://jsoup.org) code base.

- MP One - Java build systems (Gradle and Maven)

- MP Two - Design Patterns

- MP Three - Testing (JUnit and random test creation)

- MP Four - Debugging

- MP Five - Code Smells

### Final Project

The final project was building an Android app according to a specification provided by the instructors. The project was completed in groups of eight. One member of the group acted as manager, one member acted as a tech lead, and the others were regular developers. Groups are assigned semi-randomly, as they take into account experience and time availability.

The project is split into five deliverables with deadlines spaced two weeks apart. They would not release the next section until the previous one was completed. While working full-time, I found this unreasonable and difficult to time budget for.

If you have previous Android or app development experience, then the assignment will be rather trivial. However, if Android development is brand new, expect to put some effort into this assignment.

### Essay

Grad students, or any student in the 4 credit hour version, write a 5-10 page, single-spaced paper on a software engineering book. The course staff provides a list of acceptable books but is open to suggestions for additional books. There were quite a few complaints about the assignment on the course forums, but I rather liked the assignment and my book choice. I read _The_ _Pragmatic Programmer_ which ended up being quite good and an easy read.

### The Final

The final was 15% of the final grade, one and one-half hours, and hosted on ProctorU. I find using ProctorU very distasteful, but unfortunately, there was no alternative. The final was closed-book.

Overall, the final was relatively easy, but also quite nit-picky and required an above-average amount of memorization. I would highly recommend keeping a list of key terms throughout the semester as it will help your study process.

## My takeaways

I would say the course quality was overall pretty good and it seemed like the instructors were passionate about making it better. Easily the best part of the class was the responsiveness of TAs and professors. They would quickly fix any course issues and respond to questions. The course offered up to 5% for participating in the forums (Campuswire), so students were also active and readily answered any questions.

Despite the overall quality of the course, I still was not the biggest fan. The content was too trivial if you already have engineering experience. I studied computer science as an undergrad, had two software engineering internships, and have been working as an entry-level software engineer for a year. By no means am I an expert software engineer, but I do have some experience which made this class feel elementary. Most of the students and my entire final project group were undergrads, which left me feeling out of place as a grad student.

My recommendation is to skip this course if you already have the experience. However, if you don't have much experience, this is a good class, and you will learn a lot.

---

Originally published at https://blog.seancoughlin.me.