Back Home
CMPSC448: Machine Learning
Semester 6

The course studied both supervised and unsupervised learning. Furthermore, the course covered fundamental machine learning concepts from a theoretical and practical perspective.

Topics studied:
  • Regression
  • KNN Classifiers
  • Neural Networks & perceptrons
  • SVMs
  • Bagging & Boosting
  • Regularization techniques & hyperparameter tuning
  • clustering
  • Principle component analysis (PCA)
  • Markov decision processes (MDP)

The course heavily relied upon fluency with Pandas and Numpy, and coding problems were routinely assigned.

See my hyperparameter tuning on the adult dataset. See my K-Means++ algorithm on the IRIS dataset.
CMPSC473: Operating Systems
Semester 5

Studied UNIX-style operating systems and its architecture, relying on the C language.

Topics studied:
  • Dynamic memory allocation
  • Virtual memory & Caching
  • CPU Scheduling & algorithms
  • Parallel processing
  • Semaphores & condition variables

The course consisted of multiple programming projects, the two most noteworthy being a dynamic memory allocator using segregated free lists and a multithreaded channel buffer system.

See my dynamic memory allocator. See my buffered channel interface.
CMPSC465: Data Structures & Algorithms
Semester 4

This course studied algorithmic design and how to solve problems with algorithms.

Topics studied:
  • Asymptotic runtime & spacetime analysis
  • Divide-and-conquer & comparison based algorithms
  • Recursive algorithms
  • Greedy algorithms
  • Graph algorithms
  • Dynamic programming & memoization

The use of correctness proofs and space/time complexity analysis when studying algorithms was strongly emphasized.

CMPSC311: Systems Programming
Semester 4

Technologies explored include the C programming language (useful functions/system calls, data types, libraries), UNIX OS, and Git.

An understanding of UNIX and its tools/environment was necessary (Ubuntu VM was used for all coursework).

Topics studied:
  • UNIX Shell and shell scripting
  • GCC compiler
  • Makefiles & build sequences
  • Memory management
  • Caching
  • File systems
  • Signal processing
  • Socket programming
  • Parallel programming

The final project was a JBOD driver interface, implementing command processing, read/write calls, and caching. Remote read/write calls for JBOD servers were also implemented using sockets.

See my JBOD driver interface with C.
CMPSC221: Object-Oriented Programming on the Web
Semester 3

CMPSC221 taught the basics of GUI programming with an object-oriented approach. The class also covered the material involving relational databases. The main language used was Java, but learning SQL was another requirement.

Noteworthy projects include a drawing application made with JFrames and a room reservation software using Java and Apache Derby.

See my room scheduler project on Github.