Week #1 |
|
Module |
What does it really mean to program? How do programmers create software and video games? We explain exactly how computers perform tasks and examine the programmer’s process of conceiving and writing clean and simple code. By the end of this module, you should be able to:
|
Lecture |
Course Introduction We review some of the topics covered in this course such as computer security, writing code, writing your own tools, and understanding risks. |
Lecture |
What It Means to Program We explore computer languages and how they are used to carry out tasks. |
Week #2 |
|
Module |
Human beings “think” differently from computers. This week, we explore the process of compilation and explain why coding for simplicity and clarity is extremely important when working in the C programming language. By the end of this module, you should be able to:
|
Lecture |
The C Programming Language Explore the benefits and vulnerabilities of the C programming language. |
Week #3 |
|
Module |
How do programmers make their code more maintainable and readable? What technique do they use to have a function call itself? Why are magic numbers and double inclusion “bad” and how can programmers fix these issues? We’ll uncover the answers this week. By the end of this module, you should be able to:
|
Lecture |
Functions, Recursion, and #define We discuss functions, recursions, and #define as they pertain to C programming. |
Week #4 |
|
Module |
How does a computer actually run machine code? We examine why C works and identify some of C’s security vulnerabilities. By the end of this module, you should be able to:
|
Lecture |
What's Going on Under the Hood? Explore binary code, signed numbers, CPUs, and Stack Frames. |
Week #5 |
|
Module |
As a programmer, one of the most valuable skills to possess is the ability to debug a program, and we explore debugging code this week. By the end of this module, you should be able to:
|
Lecture |
Debugging We step through the process of debugging and look at each line of code to examine the value of variables. |
Week #6 |
|
Module |
How do programmers keep data together in one place? How do they tell the compiler to treat the variable as a different type? In what ways can things go wrong in the File Input/Output process? We will discover the answers to these questions this week. By the end of this module, you should be able to:
|
Lecture |
Structures, Unions, and File I/O We explore floating points, structures, unions, casting, and file I/O in this week’s lecture. |
Week #7 |
|
Module |
Have you ever wondered how programmers directly access memory from written code? This week, discover pointers’ ability to create complex data structures like linked lists and trees, and create and allocate dynamic data structures that can grow or shrink as needed. By the end of this module, you should be able to:
|
Lecture |
Pointers Analyze pointers, arrays and operators. |
Week #8 |
|
Module |
This week, we review and apply the best practices of programming. By the end of this module, you should be able to:
|
Lecture |
Putting It All Together Review the importance of checking return codes and coding simplicity, and analyze broken code and possible solutions. |