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.

Categories:

Updated:

Leave a comment