This course provides a solid understanding of the core OO and Java concepts and practices needed to create well designed Java programs. It also covers all the key OO capabilities and how to use them in Java, including material on creating well designed Java classes, using encapsulation, building more complex functionality with composition, and using […]
x86-64 Assembly Programming
This course is an introduction to assembly programming for the x86-64bit architecture. Emphasis is placed on best, current practices and methods. Students will write extensive code as part of the course.
Git Version Control
This course trains participants in essential, modern-day version control practices. It focuses on Git, the most popular (90% market share) and powerful Version Control System (VCS). Rather than focus on specific copy-and-paste recipes, participants will gain deep understanding of Git. Particpants learn techniques that are applicable to GitHub, GitLab, or any other centralizing service. The […]
Introduction to C Programming
This class provides students with a foundational study of the C programming language, C23 standard. Classroom lectures stress the strengths of C, which provide programmers with the means of writing efficient, maintainable, and portable code. Lab exercises throughout the class test and reinforce understanding of the concepts. This class is best taken as the first […]
Intermediate C Programming
This course continues the study of the C programming language using the C23 standard. The core language features covered in this course include functions, arrays, strings, pointers, dynamic memory allocation, library functions, structures, and file I/O. Programming techniques covered by this course include modularity, top-down design, documentation, debugging, and testing. Lab exercises throughout the course […]
This course introduces the fundamental tools, topics and concepts of discrete mathematics. This course emphasizes counting methods, proof techniques and problem solving strategies.
This course is an introduction to the basic concepts of reverse engineering. Emphasis is placed on methodologies and tools. This course will not go in-depth on any specific tool, but will serve as a more general introduction to the skills required for reversing. Students will use various tools to accomplish multiple reversing labs.
This course covers the fundamental components of the Ruby Programming Language. Emphasis is placed on the object oriented aspects of Ruby. Topics include arrays, hashes, regular expressions, io, exceptions, modules, and applications areas.