Basic CNO Developer Course
top of page

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.

BCI_LOGO_FINAL_Seal_Black-MOD2.png

Instructors at Boston Cybernetics Institute

Jeremy Blackthorne.png

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.jpg

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.png

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.jpg

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.

Basic CNO Developer Course

Cyber-security-course.png

COURSE PRICE

Upon Request

COURSE LENGTH:

88 days

What happens after I click the button?

Your default e-mail client will pop up and you'll be asked to write us a short message. Please let us know which course you are interested in and what dates would work for you.

Anchor 1
bottom of page