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 was an Undergraduate Teaching Assistant for CPSC 310 (Introduction to Software Engineering), an upper-year course 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.

Courses

I’ve included a brief description for my more applicable and recent courses.

Computer Science

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. Completed a project called FileScript (a domain specific language) and DSA (a tool for visualizing lock dependencies statically to 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