Basic CNO Developer Course
Course Description
No prior programming experience required! The Basic CNO Developer Course teaches students from the ground up, beginning with "Hello, World!" programs and ending with a well-tested, multi-program project.
This class is majority hands-on keyboard. Instructors provide context and introduce new concepts with examples where appropriate, but mostly provide personal feedback as students directly implement a project involving a C and Python component that communicate over a network. Student work is checked by CI jobs when they commit work, providing instant and objective feedback on student progress. Class is recorded live, and all materials, including recordings, are made available to students and may be shared within their unit.
Curriculum Overview: Detailed Course Breakdown
C Programming
Go from no C programming experience to strong programming proficiency. Students will develop a detailed understanding of and be able to implement C programs involving and/or using:
- C programming fundamentals
- memory allocation, control and management
- data types, including fixed-width data types
- arrays
- arithmetic operations
- standard main() entry arguments
- file management operations
- functions
- data validation
- pointers
- conditionals
- sort routines
- state machines (and will be able to draw diagrams describing state machines)
- compilers, linkers, and debuggers
- makefiles
- bitwise operators
- environment variables
Python
Go from no Python programming experience to strong programming proficiency. Students will develop a strong understanding of and be able to implement Python programs involving and/or using:
- Python programming fundamentals
- data types and object-oriented constructs
- arithmetic operations
- file management
- functions
- data validation
- conditionals
- object-oriented programming (OOP)
- parsing command line arguments
Data Structures
Students learn about and implement fundamental Computer Science data structures, including:
- stacks
- queue varieties, including priority queues
- tree varieties, such as binary search trees
- linked list varieties, such as singly and doubly-linked lists, and circular linked lists
- hash tables
Algorithms
Students learn about algorithm analysis using Big-O notation and implement fundamental Computer Science algorithms, including:
- graph traversal algorithms
- hash functions
- common sorting algorithms
Operating System Concepts
Students learn about the fundamentals of implementing modern operating systems, including:
- virtualization
- the boot process
- file systems
- interrupts
- signal handling
- concurrency
Secure Coding
Students learn how to build secure programs, both by learning how to avoid common insecure programming practices, such as off-by-one errors and buffer overflows, and by learning how to code defensively by, for example, sanitizing input and safely allocating memory.
Networking Fundamentals
Students learn networking fundamentals and how to implement networked programs in C and Python, including:
- fundamental terms and concepts
- common protocols and their associated concepts and ports
- addressing in key networking protocols
- physical and logical network infrastructure
- different types of network communications
- implementing client and server applications in Python
- implementing client and server applications in C
- handling partial send and receives
- implementing functions that properly handle any IPv4 or IPv6 address
- using IO multiplexing
Serialization
Students learn how to serialize and deserialize data across systems with differing endianness, and how to handle error conditions and edge cases such as partial reads and writes.
Regular Expressions
Students learn how to write different types of regular expressions, and implement C and Python programs that use regular expressions.
Reverse Engineering
Students learn how to reverse engineer programs without source code, and the relevance of registers, memory, the stack, and different calling conventions.
Testing
Students learn how design code to facilitate testing, how to implement and use unit and functional/integration tests in Python, and how to use CI to improve product quality.
Embedded Systems
Students learn how embedded systems differ from desktop computers and servers, including hardware and software limitations, different C software libraries, and how to cross-compile software.
Version Control
Students learn how to use git to implement common software engineering workflows, such as working in feature branches and then merging pull requests. They also learn how best to structure projects to leverage version control.
Continuous Integration / Continuous Delivery
Students learn how to implement CI/CD in GitLab, including building, linting, statically analyzing and testing projects.
About Boston Cybernetics Institute
Boston Cybernetics Institute, PBC was created by former MIT Lincoln Lab cybersecurity researchers to give meaningful niche cyber instruction to a new generation of cybersecurity professionals.
We avoid the normal style of teaching with PowerPoint and lectures, opting to provide instead real-life engaging instruction that takes place in a customized environment. We have given our style of instruction to multiple DoD agencies, US commercial companies, and international companies.
Instructors at Boston Cybernetics Institute
Jeremy Blackthorne
President of the Boston Cybernetics Institute
Jeremy Blackthorne is a Lead Instructor at the Boston Cybernetics Institute (BCI). Before BCI, he was a researcher in the Cyber System Assessments group at MIT Lincoln Laboratory. Blackthorne is the co-creator and instructor for the Rensselaer Polytechnic Institute (RPI) courses: Modern Binary Exploitation, Spring 2015 and Malware Analysis, Spring 2013.
Jeremy has published research at various academic and industry conferences. He served in the U.S. Marine Corps and is an alumnus of RPISEC. He holds a BS and MS in computer science.
Clark Wood
Security researcher and instructor
Clark Wood is a security researcher and instructor at the Boston Cybernetics Institute (BCI), focusing on Reverse Engineering, Exploitation, and CI/CD. He recently built a Reverse-Engineering and Exploitation platform for a DoD customer and is the Lead Engineer for BCI’s Government Services.
Rodolfo Cuevas
Security researcher and instructor
Rodolfo Cuevas is a security researcher and instructor at BCI, where he focuses on understanding how design constraints can be used to limit the impact of an attacker on a system. His research combines the adversarial mindset with approaches influenced by Systems and Control Theory.
Reed Porada
Security researcher and instructor
Reed Porada is a security researcher and instructor at BCI, focused on getting to the "so what" of both defensive and offensive cyber measures. Reed also leads BCI training in Cyber Systems Analysis, focusing on developing systems-thinking skills of developers up to managers.
COURSE PRICE
Upon Request
COURSE LENGTH:
88 days