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 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. Blackthorne was an active member of the Student Security Club and CTF team, RPISEC, from 2012 to 2015, where he taught seminars on Reverse-Engineering, Exploitation, and various other Cybersecurity topics.
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. Clark was formerly on the technical staff at MIT Lincoln Laboratory where he was a member of the Cyber System Assessments Group. Clark holds a BA in Economics from the University of Florida, a BS and MS in Computer Science from Florida State University, and a Master’s in Technology and Policy from MIT.
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. Rodolfo was a staff member at MIT Lincoln Laboratory and began his career as a RADAR and Ballistic Missile Defense System (BMDS) analyst. Later, Rodolfo transitioned to evaluating and Red-Teaming tactical and commercial cyber systems in support of DoD and other government programs. Rodolfo holds a BS, M.Eng., and M.S. in Electrical and Computer Engineering from Cornell University.
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. Reed was a staff member at MIT Lincoln Laboratory for ten years, where he was responsible for Test and Evaluation, Test Automation Research, Red-Teaming of Cyber Systems, and Blue System Architectures. Reed was a computer scientist at the Naval Research Laboratory focused on wireless communication systems. He holds a BS in Computer Science from the University of Maryland, College Park and an MS in Software Engineering from Carnegie Mellon University.