Reflections on Fall Semester 2022
This fall semester of 2022 was a memorable one for me. I put my full focus into classes such as System Programming, Digital Systems Design and Experiments, and Internet Security and was able to achieve great results. In this post, I want to take an overview of what I have learned in each subject and record my experiences during this semester.
System Programming
In System Programming, I learned about the general overview of computer systems by reading CS:APP. Through this class, I studied the following topics:
- Machine-Level Programming
- Assembly Basics
- x86-64 Linux Memory Layout & How program uses stack for calling procedures
- Buffer Overflow Attack and Mitigations for the attack (Stack Canary, ASLR, NX, …)
- Assignments: bomblab(Reverse Engineering using gdb) & attacklab(Exploiting programs using BOF)
- Basics of Compiler Optimization (Constant Folding, Loop Unrolling, Code Motion…)
- Memory Hierarchy
- Linking
- ELF object files
- Loading Executable Object Files
- Static Linking & Dynamic Linking
- Position-Independent Code (PIC)
- Exceptional Control Flow
- Exception & Exception handler, Signals
- Process Control (
fork
,wait
,exec
, …) - Assignments: shlab(Wrote my own Unix shell), dbglab(Wrote my own debugger with breakpoint feature)
- Virtual Memory
- Overview of Virtual Memory
- Dynamic Memory Allocation
- Assignment: malloclab(Wrote my own memory allocator using segregated free lists)
- System Level I/O, File System
- Network Programming
- Concurrent Programming
- Multithreading, Semaphore, Mutex
- Race, Deadlock, Livelock, Starvation
- Thread-safe & Async-signal-safe
- Assignment: proxylab(Wrote my own web proxy)
Digital Systems Design and Experiments
In Digital Systems Design and Experiments, I learned Verilog to design a practical digital system, and various digital modules such as Adders, Multipliers, Counters. Through this class, I learned following topics:
- Verilog
- Designing Digital Systems
- ASICs, FPGAs, …
- Static Timing Analysis
- Number Representations
- 1’s Complement, 2’s Complement, RNS, MRS, …
- Floating-Point Arithmetic
- Adders
- RCA, CLA, Carry Select Adder, Carry Skip Adder, Carry Save Adder, Parallel Counters, …
- Multiplication
- Booth’s Algorithm
- Labs & Term Project - Implementing a CNN Accelerator
- Term project was to implement a CNN Accelerator using Systolic Array on the FPGA board in team.
- I designed a pooling module that performs the computation in pooling layer in CNN, and modules that uses APB protocol to communicate with host CPU from FPGA board.
- I also participated in debugging a FC module and Conv module.
- Although our every modules did success to pass the simulation test, we couldn’t upload the program on FPGA board, because of the error in Conv module. 🥲 (Pooling module & FC module worked well when uploaded on the board.)
Internet Security
In Internet Security, I learned various topics about internet security such as Cryptography, Blockchain, Web security.
- Cryptography
- Symmetric key cryptography
- Public key cryptography - RSA, ElGamal algorithm, ECC…
- Digital Signatures, MAC
- PKI (Public Key Infrastructure)
- Blockchain
- Web & Network Security
- TCP/IP Architecture, HTTPS
- DDoS Attacks
- Firewall, IDS
- Cookie, SQL Injection, XSS, CSRF
Conclusion
Overall, I am very pleased with the results I have achieved this semester. My hard work has paid off, and I have earned an A+ in all of the classes I took this semester. 😊
My fall semester of 2022 was a fruitful one that allowed me to gain insight and knowledge in a variety of different topics. Through the classes I took, I was able to learn about computer systems, digital systems design, internet security, and more. I am grateful for the experience I had and look forward to continuing to learn and grow.
Leave a comment