Fall Classes 2023

Introduction

I just completed my first term at University of California, Irvine studying software engineering.

INF 43: Introduction to Software Engineering

Topics covered:

  • What is software engineering
  • Failures and Requirements
  • Use cases
  • Architecure
  • Design Models Notations
  • User Orientation
  • Testing
  • SW Processes and Models

Class format:

There are 2 weekly lectures and a discussion session. Discussion do not over any new material and the professor intends for student to use the discussion sessions to complete the weekly quizzes. Towards the end of the term I simply stopped attending discussion because I did not find it useful. I simply completed the quizzes at home. The lectures are very informal. Professor Gillespie does not seem to prepare much before hand. He simply reads from the slides and then adds his own commentary based on his work experience. I really enjoyed the guest lecture we had. An engineer from the James Webb space telescope program come and talk about his experience and the challenges they faced designing the solar shield. You do not need take notes during lecture. All the material can easily be reviewed reading the slides. The information is fairly easy and introductory. Most of the ideas seem common sense.

Assignments:

There are 3 major assignments in this course. The first assignment was by far the most involved and challenging. It was to create a complete requirements document for a fictional mobile X-ray system. My paper ended up being 11 pages. I seriously doubt that the requirements I came up with would be practically useful in reality. However, I think the point of the assignment was to simply introduce the idea of requirements documents and not get too into the weeds of wither or not the requirements students came up with would work in reality. I think as long as you fill out each of the required sections with plausible answers then you will receive full credit. It’s a long assignment. Start early and give yourself plenty of time to complete it. The second assignment was to set up git, if you do not already have it on your computer. This assignment was ridiculously easy. It took me no more than 20 minutes to complete. The third assignment was to create test cases for a fictional mindfulness application. It took about 2-3 hours to complete. Not very difficult, but a little time consuming.

Exams:

There are weekly quizzes on Canvas. The quizzes cover the previous weeks lecture and can be taken during the discussion sessions. You are allowed to use notes and lecture slides. They tended to be about 7 or 8 multiple choice questions and 2 to 3 short response questions. The quizzes were really easy. One should be able to do well with minimal studying. I would simply look over the slides and write a quick cheat sheet right before taking the quiz.

Overall:

This is a really introductory level course. You do not even have to know any programming to do well. In fact, the most technically complex aspect of this course is setting up git. This class is an easy ‘A’. I would recommend taking it at the same time as a more demanding class like 6D.

CS 122A: Introduction to Databases

This course is aimed at database design and use of database management systems in implementing database applications.

Topics covered:

  • Introduction to the design of databases
  • The use of database management systems for applications.
  • Entity relationship (E/R) approach to database design.
  • Relational data model, mapping E/R designs to relations, relational design theory, abstract query language such as relational algebra, and programming in SQL.
  • Programming with relational database management systems.
  • Key database technologies including indexing and transactions.
  • Introduction to semi-structured data and NoSQL movement.

Class format:

This is a lecture based course. There are two lectures a week and a discussion session. Discussion was very useful. Most people did not attended discussion, except for the few weeks were assignments were due. Then everyone came and assaulted the TA with a million homework questions. Attending lecture is important. The homework assignments reinforce lecture topics. Its important to dedicate time to the homework. The lectures throw a lot of terms and SQL instructions at you. The only to remember these technical term is to reinforce your learning with the homework.

Assignments:

There were 5 homework assignments. Assignment 1 was to create an ER diagram based on a case study. People really struggled with assignment and there was a lot of frustration amongst students. The main issue was that the solution was vague. There were multiple ways that one could go about getting the same results. It was not entirely clear from the case study what the relationship between some of the entities were. While this is understandably frustrating for students, it likely reflects real life challenges data architects face when designing a database. The 2nd assignment had some question on super keys and also asked us to translate the ER diagram from assignment 1 into SQL statements. Assignment 3 was to preform queries using relational algebra statements. Assignment 4 was similar to assignment 3 except this time we used SQL statements instead of relational algebra statements to preform queries. Assignment 5 had us writing more advanced SQL queries and statements using concepts like triggers, constraints, and recursive queries.

Exams:

There was a midterm and final both of which were on Gradescope. The overall class average for the midterm was low enough that there was an additional extra credit exam, that could only help you grade. On the midterm, I really struggled with questions on relational model and integrity constraints. Also, the relational algebra question were tough. It is just challenging to come up with a relational statement without preform queries to check results. The final went much better than the midterm. It focused on SQL statements.

Overall:

This was the one course I took this term that covered a technical topic. Mary Roth has a deep understanding of database design. The assignments were never too challenging, but did require thoughtful work.

ICS 6D: Discrete Math for CS

Topics covered:

  • Logic, sets and functions
  • Sequences, recurrence relations, summations
  • Inductions and strong inductions
  • Recursive definitions, data-structures, and algorithms
  • Functions defined on recursively-defined domains and structural induction
  • Modular arithmetic and application to cryptography
  • Counting and probability

Class format:

There are two lectures each week and a discussion session. Attend discussion, it is vital if you want to do well. The lectures are dense and filled with a lot of mathematical notation. It is ok if you do not fully understand a topic coming out of lecture or are not able to completely follow along. There will be numerous chances for your to ask questions and get help during discussion sessions and office hours. Honestly, most of my learning came from doing the homework.

Assignments:

There is a lot of work for this class. Each week, a homework problem set is assigned. I found the homework to be between 3-5 hours of work. Before each exam, the professor released additional practice questions, which were basically every single problem from the book. I would do them all, and I am sure its the only way I did well on the exam. In addition, there are discussion problems that you complete with TA. Despite all the work, homework assignments do not count towards your final grade. Though it is crucial you complete them. Additionally, there are Zybook readings that count for 6% of your final grade. Honestly, I did not find the readings and interactive problems to be that helpful. They were useful for providing a quick introduction to topics, but the bulk of my understanding came from lecture.

Exams:

There are 4 exams and final exam. These exams make up the majority of your grade. It is important to do well on them. The final is optional and cumulative. The format of the final was somewhat unorthodox. Basically, there were four sections that correspond to the 4 previous exams. If you did better on the corresponding section on the final, your final exam grade for that section for replace the exam grade. I ended up not taking the final exam because I was happy with my exam grades. Though I know some students hedged everything on the final.

Overall:

This is a math class. It requires a lot of work to do well. You can not do well just reviewing lecture slides. You have to do the homework and practice problems. This class is also extremely challenging and I saw a lot of students struggle and fail. The topics covered in this class are abstract and can be difficult to grasp initially. Induction was definitely the topic that students struggled with the most. For this class I highly recommend utilizing the TA office hours. The TAs for this course were extremely helpful. I was able to get the homework done quicker because I could ask them questions while working on it. Also, the TAs made the topics feel more approachable.