Overview of courses enrolled in uni

I took many great courses in uni - here’re some of my favorites

Yukihide Takahashi

  ·  8 min read

*Courses are presented in the sequence I completed them

CS1010E Programming Methodology, Prof. Alan Ho #

AY20-21 Sem 1, course description

I took this course in my first semester at NUS. This was during the Covid era when classes were delivered online. Although I had no prior programming experience, I found that I could follow the lectures alright. They started with data types and assigning variables, then moved on to algorithm controls like loops. I recall one of the problems in the final exam was to implement John Conway’s "Game of Life". I was quite happy when I got the expected result in the terminal. By the way, try searching "conway’s game of life" on Google.

CS2040C Data Structures and Algorithms, Prof. Steven Halim #

AY21-22 Sem 1, course description

Classes were still delivered online because of Covid. Nonetheless, Prof. Steven Halim made the learning experience fun and effective by using online tools, such as his famous visualgo.net and Discord for offline consultations. In this course I learned about common data structures like lists and trees, and sorting and searching algorithms. I recall Prof. Halim adopted a more application focused approach in his assignments, and would emphasize effective usage of data structures and algorithm flow to solve problems, instead of having students implement their own trees like how other instructors did. (Although I did feel I should do so at least once in my lifetime) One fond memory I have is the Practical Coding Exam, where we were given two coding tasks to complete in two hours. The student beside me finished the exam in 30 minutes - turns out he had several years of competitive programming experience.

IE4210 Operations Research II, Prof. Zhang Junyu #

AY22-23 Sem 2, course description]

This course introduces problem classes and methods in operations research, such as linear programs, integer programs, the simplex method, and dynamic programming. I had a more mathematical treatment of the subject compared to the prerequisite, which was more algorithmic. I also enjoyed the weekly MATLAB assignments. I recall I would visit his office from time to time to ask about the homework/class material, but the professor would extend the discussion to deeper concepts (one memorable one was the complexity analysis of the simplex method). I really enjoyed these unexpected sidetracks as well.

MA1100 Basic Discrete Mathematics, Prof. Chin Chee Whye #

AY23-24 Sem 1, course description

This is a course for freshmen in the Department of Mathematics, and serves as an introduction to the fundamental language and concepts of higher level mathematics. This was my first proof-based course. I enjoyed the process of using definitions to construct arguments and gain insights about mathematical objects like sets and numbers. This course inspired me to take more courses in Math, and also to learn on my own, as (fortunately or unfortunately) I was already in my final year.

HS2301 Financial Literacy and Numeracy, Prof. Wandrille Gaultier, Naomi Hoe, Chen Kan #

AY23-24 Sem 1, course description

This course introduces basic concepts in finance and accounting. I took this course for general knowledge, wanting to learn at least the common terms and ideas in finance. I learned about investment strategies and options, accounting, risk assessment, and towards the end, blockchain and cryptocurrency mining. I recall trying pretty hard to understand the implications of long/short positions and how you would hedge against the respective risks (I’ve never been good with cash calculation, probably because I get confused thinking in multiple perspectives. Don’t get me started on splitting bills…) But I got somewhere eventually. I also enjoyed the team presentation - my team did an overview of the 2008 GFC.

CS2113 Software Engineering & Object-Oriented Programming, Prof. Akshay Narayan #

AY23-24 Sem 2, course description

This course introduces students to various aspects of professional software engineering, from project management models to key software engineering principles. The highlight of the course is the team project. Over 5 weeks, a team of 4 students will collaborate on a CLI app coded in Java, using GitHub for version control. I feel this course proves wrong people who claim that the skills in professional software engineering, primarily the soft ones, cannot be learnt in school. I was one of those people, until I took this course. Above all, I learned the importance of not reinventing the wheel, especially regarding coding principles (Separation of Concerns, SLAP, coding patterns, etc). Several professional coders have set forth principles they felt was important based on their experience, and as a novice in software development, it helps to follow those knowing that most likely they will turn out to be effective.

MA2101 Linear Algebra II, Prof. Brett Mcinnes #

AY23-24 Sem 2, course description

This course featured a more conceptual exploration of Linear Algebra compared to the basic Linear Algebra course, which is more computation-heavy (e.g. find a basis of a vector space, compute the determinant of a matrix, etc). One fun point of this course is that the intructor downplays the importance of the determinant. In the prerequisite course I recall determinants were introduced using a crazy formula involving polynomials, then concepts like invertibility followed from there. In contrast the instructor (and the author of the reference book used, "Linear Algebra Done Right" by Sheldon Axler) left the discussion of determinants to the very last, after an exposition of linear transformations, dual vectors and spaces, and billinear forms. In fact, the Spectral Theorem was discussed even before determinants. In this course, a matrix’s determinant emerges from studying the properties of the linear transformation it represents (under ANY basis, therefore ‘well-defined’ => ‘determine’ => ‘determinant’). On the way you would’ve encountered the ‘Fundamental Theorem of Linear Transformations’ (a.k.a the Rank-Nullity Theorem), so you would’ve learned about invertibility there already, before determinants. I also enjoyed the topic of quaternions and how an extra degree of freedom in expressing a vector in 3D solves problems like the Gimbal Lock problem.

MA3233 Combinatorics and Graphs II, Prof. Huang Hao #

AY23-24 Sem 2, course description

This course discusses basic concepts of graph theory (not so much of combinatorics, despite the course title). I learned about different families of graphs, such as bipartite graphs and trees, and graph parameters like vertex- and edge- connectivity. Ultimately I think the purpose of the course is to uncover properties of different graphs - for example, can we give a bound of a the chromatic number of planar graphs? It was a proof-based course, and for me it was at times challenging to understand, let alone think of myself, some of the proofs of theorems. The course also lets students present their proofs of problems during tutorials. I did that twice - it was truly a nerve wrecking experience, as I was put under the scrutiny of the entire class. It felt very different from the usual presentations I did in other classes. Overall I think it was a experience I couldn’t get in a course in Engineering.

IE4213 Learning From Data, Prof. Wang Guanyi, Prof. Tham Chen Kong #

AY23-24 Sem 2, course description

This course was split into two halves - The first half was taught by Prof. Wang and covered conventional machine learning methods such as linear regression, gradient descent, logistic regression, and support vector machine. A bit of mathematical background was expected, such as matrix calculus and convergence of series, but some self-learning through books or online resources were sufficient to catch up. I particularly enjoyed the primal-dual formulation of SVM and how it turns a nonconvex problem into a convex problem. The second half discussed deep learning topics including MLP, RNN, LSTM, and RL. This section focused more on application - I think in these fields the practical results emerged before the theory, and scientists are still trying to figure out why they work and when they will fail. The teaching thus emphasized a higher level understanding of the characteristics of these methods. We also learned about several challenges in DL, such as the vanishing gradient problem and how they are dealt with. As a term project students were given a prediction task in which they use Tensorflow’s RNN and LSTM models and compare their performance.

IE5221 Transportation Modelling and Economics, Prof. Liu Yang #

AY23-24 Sem 2, course description

This course introduces concepts in transportation modelling, such as the user equillibrium model, the discrete choice model, public and private pricing, and government intervention. I felt the concepts were explained clearly with plenty of examples. I also enjoyed the class readings, which were from the American Journal of Transportation. Usually I would need a bit of effort to read and understand academic journals because of technical terms and long and complicated sentences, but the chosen articles had little of those and were easy to follow. The class assignments were light as well - two homeworks and two exams. The instructor was against the idea of ‘cheatsheets’ in exams, where students cram a semester worth of notes into one piece of A4 paper, and as such exams were open-notes. This is a graduate-level course, and like other graduate-level courses at NUS was conducted in the evening 6pm - 9pm. At NUS, students with final year standing are able to read graduate level courses to satisfy their graduation requirements.