Ryan Arnouk
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.
I’ve included a brief description for my more applicable and recent courses.
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