Teaching
Semester | Course | Description | Role |
---|---|---|---|
Fall 2023 | CS580U | Introduction to C Programming | Lecturer |
Spring 2023 | CS458 / CS558 | Introduction to Computer Security | Teaching Assistant |
Fall 2022 | CS580U | Introduction to C Programming | Lecturer |
Spring 2022 | CS458 / CS558 | Introduction to Computer Security | Lecturer |
Fall 2017 | CS220 | Computer Systems, Architecture and C Programming | Teaching Assistant |
Spring 2017 | CS480C / CS580C | Software Security | Teaching Assistant |
Course Descriptions
- CS 220: The architecture and programming of computer systems. Data representation and computer arithmetic. Processor and memory organization. Assembly and machine language programming. Instruction set architectures, encoding and addressing modes. I/O techniques. Interrupts. Advanced C programming language constructs and their implementation in assembly language. Introduction to system software (assemblers, linkers, loaders, compilers). Supervised laboratory work involves programming and debugging using machine language, assembly language and C.
- CS 458 / CS 558: The course provides an introduction to the principles and practices of network, computer, and information security. Topics include authentication and cryptographic techniques, intrusion detection, access control, security policies, and program/policy analysis techniques.
- CS 480C / CS 580C: offensive and defensive technologies in the area of software security. Particularly, students will learn about various vulnerabilities that lead to software compromise, attacks that exploit such vulnerabilities, and defenses that defend against such attacks. Topics covered include simple control-flow corruption attacks, slightly harder buffer overflow and return-to-libc attacks, and advanced ROP attacks. Students are expected to not only learn the concepts behind each attack, but also execute them in a controlled environment.
- CS 580U: Review of programming concepts, programming environments, debugging tools, large program management and design, program complexity analysis and optimization, and data structures.