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