Ryan Arnouk

UBC

At UBC, I am pursuing a Bachelor of Science in Computer Science. I am a UBC Presidential Scholar’s Award Recipient (BMO Financial Group National Scholarship). An entrance scholarship renewed for four years of study.

I am an Undergraduate Teaching Assistant for CPSC 310 for 2024W2, 2025W1, and currently 2025W2. CPSC 310 is an upper-year course titled Introduction to Software Engineering and is required for UBC Computer Science undergraduates. I also mentored at NW Hacks 2025, UBC’s largest hackathon (and participated in 2024).

Most of the courses I have completed focus around software engineering, programming languages (interpreters and compilers), networking, databases, and distributed systems. A more comprehensive list of my relevant courses can be found below.

Computer Science Courses

This list is not exhaustive. I have only included relevant courses in Computer Science and omitted electives. For more recent and applicable courses, I added a brief description.

CPSC 418: Parallel Computation

Learned about the message-passing parallel programming paradigm using Erlang and data-parallel computation using CUDA.

CPSC 436C: Cloud Computing (Topics in Computer Science)

Designed a file system that replicates data from a primary AWS instance to a secondary Azure backup, with automatic failover.

CPSC 411: Introduction to Compiler Construction

Collaborated on developing a compiler in Racket for a language that is a subset of Racket (roughly similar to a C-like abstraction level), targeting x86-assembly.

CPSC 410: Advanced Software Engineering

Learned about designing and implementing a domain specific language and various types of program analysis. Created a domain specific language to search through a file system, and a static analysis tool to visualize lock dependencies and warn programmers about potential deadlocks.

CPSC 416: Distributed Systems

Learned and implemented various distributed systems, including the RAFT consensus algorithm.

CPSC 404: Advanced Relational Databases

Explored relational database systems (IBM Db2 mainly) diving deep into query optimization, concurrency, crash recovery, physical design, and indexing.

CPSC 311: Definition of Programming Languages

Programming theory exploring interpreters and the definition of programming languages, including variable binding, data types, etc.

CPSC 320: Intermediate Algorithm Design and Analysis

Learned about different algorithm designs, including dynamic programming, stable matching, greedy algorithms, etc.

CPSC 317: Introduction to Computer Networking

Computer networking, including UDP, TCP, DNS, HTTP, and more. Implemented a POP3 mail server, DNS look up service, and a simple TCP example among others.

CPSC 310: Introduction to Software Engineering

Implemented a full-stack web application in TypeScript to display statistical insights about UBC courses (and later TA’ed this course!).

CPSC 313: Computer Hardware and Operating Systems

Learned about CPU design including pipelining, caching, caller/callee conventions. Additionally, dived into operating system concepts like file systems, virtual address spaces, and the shell.

CPSC 213: Introduction to Computer Systems

Developed an understanding of assembly, C, concurrency, and computer hardware.

CPSC 330: Applied Machine Learning

CPSC 304: Introduction to Relational Databases

CPSC 221: Basic Algorithms and Data Structures

CPSC 210: Software Construction

CPSC 121: Models of Computation

CPSC 110: Introduction to Systematic Program Design