MBHS Course Development

February 15, 2017

In the fall semester of 2017 (our junior year), we spent a class in an organized study hall developing a new elective for Montgomery Blair’s Computer Science department. This post is intended to provide a little bit more information about the current status of this project and our plans for the future.

The Inspiration

At Blair, there are already a bunch of pretty awesome computer science electives. At the beginning of the Magnet track, there’s Fundamentals of Computer Science and Algorithms and Data Structures, which give you an intro to CS (and even some EE) and a foundation in Java programming. After this come the CS electives, which include Analysis of Algorithms, Graphics, and 3D graphics (although the latter is no longer offered in favor of a brand new Cybersecurity course).

However, by the time scheduling came around and our class was given the list of computer science electives we could choose from, a lot of us realized that we either knew most of the material already or had no interest in sitting through more introductory portions of the class time. And so we thought, why not turn this knowledge into its own course? Something more relevant to applied computer science; something more interesting and at a faster pace than other classes?

So, I posed it to a couple of my friends, and pretty soon after, course development was formed.

The Plan

Ultimately, we wanted to focus more heavily on material applicable to the non-theoretical aspects of computer science, such as how computers actually work, how they are utilized by operating systems, how they interact with other computers, and how we can use them ourselves. After tossing some initial ideas around and spending quite a bit of time brainstorming, we came up with a solid list of topics, assignments, and project ideas. Last but not least, we decided on a name for our course, and although Fundamental Foundations of Holistically Synergized, Analytical Innovations into Advanced, Specialized Computational Methodologies with Disruptive Technologies will forever remain in my heart, let’s just say that Practical Computing is much less of a mouthful…

After running our proposal by the magnet coordinator (the go-to guy for courses, counseling, and schedule related stuff), we got the green light to spend a credit’s worth of class time on developing our course. We approached counseling to receive schedule changes, and decided more specifically on the material we wanted to cover as it related to the other courses available at Montgomery Blair.

Here’s a rough overview of our proposed semester material:

  • Unit 1: Hardware
    • C and Assembly
    • Unix systems
    • Hardware and software
  • Unit 2: Systems
    • Purpose of OS’s
    • System calls
    • Kernels
    • Memory management
    • Thread scheduling
    • I/O management
  • Unit 3: Networking
    • OSI Model, TCP/IP
    • Newer models
    • TCP and UDP communication
    • Other protocols
    • Servers (specifically unix)
  • Unit 4: Cybersecurity
    • Databases, hosted services
    • Web stack technology
    • PHP, Django
    • XSS, vulnerabilities
    • Cryptography
    • Reverse engineering

However, the material was not the only part of our plan. We also decided that in addition to providing a new elective to Blair, we would package it with a brand new electronic distribution platform.


The vaguely named project we came up with to host the material for our course is called Learn, and its based on Django for Python 3 (surprise, surprise). The platform is intended to tie into the existing Anduril ecosystem in order to benefit from features such as single sign-on, and will essentially provide a centralized means for teachers to distribute readings and assignments as well as collect and grade code from practice and projects.

At its core, Learn is intended to be fully modular with regard to learning material, and can host any number of courses and classrooms. As a result, it will be able to host not only content from Practical Computing, but also from other courses at Blair, such as Analysis of Algorithms. More on this will undoubtedly be released in my next blog post about it.


As of the end of our first semester, the majority of the course material is done, including presentations, assignments, and project specifications. However, we will not be able to work on it until the summer, at which point I’ll release more details and possibly even a demonstration. Unfortunately, the platform also relies on Anduril, which is also a work in progress. However, be sure to stay tuned!