Winter Classes 2024

With the end of the winter term I am now one third of the way to a Software Engineering degree! I completed 4 courses this term. By far CS 143A was the most technically challenging course I took this term.

(CS 143A) Principles of Operating Systems

The class was taught by Ardalan Amiri Sani. He is extremely knowledgeable. Operating systems is his research area so he has a strong personal interest.

Topics covered:

  • Overview of operating system structure
  • Processes and Threads
  • CPU Scheduling
  • Process Synchronization
  • Deadlock
  • Main Memory
  • Virtual Memory
  • File Systems

Class format:

There was lecture twice a week on Tuesday and Thursday. Every week there was a homework assignment that usually consisted of 22-24 questions. Every other week there was a quiz that consisted of 10 questions and usually covered about two lectures worth of material. The final exam was cumulative and 40 questions.

Assignments:

Each week there was a single homework assignment consisting of true/false, multiple choice and fill in the blank questions. These questions typically required a more granular understanding of the topics. However, you were allowed to use your notes and lecture slides while working on the homework. More times than not the answer to question could be found by re-reading the slides. The homework was great practice for the quizzes and exam. They were typically harder than the exam questions. Meaning if one felt confident completing the homework that they would more than likely also do well on the exam.

In addition there was an optional project. The course project was based on Pintos, a simple and small operating for teaching. The main task for this project was to modify the thread scheduling system. I re-implemented the timer_sleep() function to put threads to sleep without using busy waiting. Also, I implemented priority scheduling, priority donation, and a multilevel scheduler.

Exams:

There were 4 quizzes, each 10 questions. The questions were a mix of true/false, multiple choice, and fill in the blank. Overall, I found the questions reasonable. They were typically high level enough that a solid understanding of the basic concepts was all that was needed to do well. Very few questions required one to preform calculations.

The final exam was 40 questions. The questions were true/false, multiple choice, and fill in the blank like the quizzes and homework. Overall the difficulty of the questions were similar to the quizzes. However, there were a few questions that required preforming calculations there were somewhat challenging. One in particular was a file systems question.

Overall:

I was the most interest in this course through out the term. Even though it is an introductory level course it covers a lot of technical detail. At first, this was intimidating. I wasn’t sure I would be able to remember all the detail. To my pleasant surprise, the quizzes and exams focused on the high level concepts taught in the class. Doing well in the class overall is very achievable. I highly recommend doing the project. I learned so much from doing the project. These concepts really only make sense once you are face-to-face with the code and trying to figure out how to implement a single feature.

(INF 131) Human-Computer Interaction

Topics covered:

  • Historical roots of HCI to cognitive science and human factors, and identify outstanding research problems being studied in the field.
  • HCI theory and guidelines to the design of user interfaces and their application.
  • Phases of the user-centered design process, and practice applying some of them (interviews, persona development, wireframe sketching, and prototyping).
  • Identifying accessibility and usability issues faced by people with disabilities and prepare accessible digital documents.
  • Explaining to others the meaning and importance of user-centered design.

Class format:

Assignments:

There are 3 major assignments that make up the majority of your grade. There is one independent and two group projects. Project 1 ask you to pick a website and critique its UX design based on the usability and accessibility principles taught in lecture. I chose Amazon.com. My paper was around 10 pages with images. The second project was to pick a different website and conduct user interviews. We picked Handshake.com, a job search site for students. We interviewed several of our classmates about their experience using the site. From these interviews we then crafted a persona and affinity diagram to help represent the common user along with the struggles and frustrations they experience when using the site. The third and final project was to take what we learned from our user interviews and redesign one feature on the site to promote a better user experience.

Professor Branham likes to include something she calls “The Extra 7%” on each assignment. Basically, the idea is that to get full credit you have to think of something additional beyond the stated project requirements. Her reasoning is that to thrive in your career that you should always go the extra mile and this is her way of working that into the course.

She also requires that everything you submit meets accessibility standards. This basically means including alt text for all images and not having any blank lines in your documents.

Exams:

There are no exams or quizzes in this course. That is one of the very nice things about this course.

Overall:

The course heavily emphasizes accessibility. Professor Branham is particularly passionate about accessibility and works it into every topic. You can tell she has a lot interest in HCI. This course is basically a introductory design course for CS majors. You learn a little Figma and UX design. It really surface level though. It is hard to teach design to a 300+ person class. If you really want to pursue UX design, you should probably also take the project based course (IN4MATX 143B) where they go much more in-depth.

(Stat 67) Statistics 67

I took this class with Sevan Koko Gulesserian. He is one of the most easy going professors at UCI. I highly recommend him.

Topics covered:

  • Introduction to probability, variable types, population vs sample, probability axioms and formulas
  • Conditional probability, independent events, contingency tables
  • Combinatorics and permutations
  • Random variables, expectation, variance
  • discrete distributions, binomial, geometric, Poisson distributions
  • Continuous distributions, uniform, exponential distributions
  • Normal distributions, central limit theorem, data visualization
  • Confidence intervals, hypothesis testing
  • linear regression
  • parameter estimation

Class format:

The class is 10 weeks long. There are two lectures each week on Tuesday and Thursday and a discussion on Friday. The lectures are also live streamed on Zoom. Koko tends to just read from the slides and occasionally draws or writes on his iPad.

Assignments:

There are weekly homework assignments. Every other week there is a practice set of problems to help you prepare for exams. Each assignment takes between 1 to 2 hours to complete. Sometimes the homework was assigned before the topics were covered in class. In those cases the homework took about an hour longer because I had to learn the topics as I was working on the assignments.

Exams:

There are 5 exams and a final. Exams are every other week. The exams are on Canvas. Exams are released on Friday and you have 24 hours to complete it. They are a mix of multiple choice and written response. I struggled on the second exam. It covered combinatorics and permutation. Even in my Discrete Math class I struggled with these topics. You need to know a few functions in ‘R’ to complete the exams. Koko pretty much tells you exactly what will be on the exams. Just complete the practice problems and attend the Thursday lecture before the exam and you should do well.

Overall:

This class is an easy ‘A’. The topics are very basic. I actually feel that the statistic course I took at community college was more challenging. Koko seems to recognize that it is an introductory level class and does everything in his power to make doing well in the class as straight forward as possible.

(INF 113) Requirements Analysis

Topics covered:

  • Requirements Engineering Fundamentals
  • Documenting Requirements
  • Stakeholders
  • Elicitation
  • Requirements Engineering Processes
  • Specifying with Natural Language
  • Model Based Requirements Engineering
  • Management and Traceability
  • Validation
  • Requirements Guidance
  • Requirements Engineering for AI
  • Agile

Class format:

Like all the other courses this term there was lecture twice a week and a single discussion. Discussions were used to work on the group project. Each week we were to come to discussion with questions to ask the TA, about the project and the application we were theoretically building. There were a lot of questions the first 6 weeks. However, towards the end of the term the questions really died out. The lectures are heavy on the power point. It seems like a lot of information. However, to do well in the class all you need to do is remember a few key terms. You form groups for the class project starting around week 2 and all your teammates must be in your discussion section.

Assignments:

There was one major group project through out the entire term based on a case study. The project was broken into six homework assignments. The overall idea to practice requirements elicitation and documentation. Pretended we were building an application called “Green Anteaters” that would promote sustainability on campus. Our task was to elicit requirements from our TA that would could then theoretically use to build the actual application. Each week during discussions we would ask our TA, who represented the customer, questions to get a better idea of the application. The break down of the assignments were as follows:

  • Homework 1: Stakeholder Model – State all the stakeholders of the Green Anteaters application. The purpose was to get us thinking about who could possibly influence the requirements
  • Homework 2: Elicitation – Based on the case study form questions to ask stakeholders, represented by our TA. The aim of the questions should be to gain a better understanding of what the customer wants the application to do
  • Homework 3: User Stories – Based on the elicitation sessions and our understanding of the application come up with common scenarios that a user of the application would encounter. Each story should clearly show the users motivation for preforming the action and what they get out of using the application
  • Homework 4: Goals Scenarios and Use Case Model – Expand on the user stories created in the previous assignment to craft scenarios that provide a more through understanding of the user
  • Homework 5: Validation/ Customer Review – We paired up with another group and reviewed their assignments 3 and 4. The idea of this was to pretended that we were in a more real life scenario where our work is reviewed and critiqued by other people and higher ups.
  • Homework 6: AI Requirements – We were to specify which use cases could best be achieved with the use of AI tools.

Exams:

There are no exams in the course. There are 5 quizzes and the lost grade gets dropped. The quizzes are 20 multiple choice questions. The first one had a short form response question, but Professor Navarro decided it was too much for the TAs to grade.

Overall:

This class stretches about 5-6 weeks of material out into 10 weeks. I think this class covers a lot of practical topics. I feel the class teaches a lot of soft skills that one will develop while working. What you learn is somewhat intuitive. However, it good practice for situation and issues that one will likely encounter in their career as a software engineer. Even if you don’t end up being the one who creates requirements for software it is good to know what goes into creating them.