The course discussion board, Campuswire, is the place for Q/A, Chat and Live Sessions (Lectures & Office Hours).


How to use it?

Campuswire is intuitive to use. However, it helps to know what features are available (there are many). Please refer to:

To aska question, go to “Calass Feed” and then “Create a Post”:


We will be collecting homework submissions through codegrade. Your submission will run against AutoTest for autograding. It will also be manually graded by a course teaching staff.


Click here to signup. You must use your JHU account to sign in.

Homework 1 will walk you through the submission process.


We use the video sharing platform Panopto to share the recorded video lectures. Panopto is linked to Blackboard and your JHU account.

I will upload each recorded lecture within 24 hours after a lecture is over. All the lectures will be posted in this folder.

With Panopto you can bookmark parts of a video and make notes on it. See this pamphlet for more information.

Java Development Kit

In this course, we will be using the Java programming language. You need to install the Java Development Kit (JDK) on your computer to compile and run Java code.


Go to AdoptOpenJDK and install JDK version 8 on your computer (choose HotSpot for JVM).

The installation is fairly straight forward (keep selecting next); in case of any issues, feel free to ask for help on our discussion board. You may also find it useful to consult this detailed installation instruction here.


We will be using a modern IDE, JetBrain’s IntelliJ IDEA (henceforth IntelliJ) in this course.

IntelliJ has two versions: a free community edition and a proprietary version which requires purchasing a license, the Ultimate Edition. For this course, either version is fine but you may as well get the ultimate edition because as a student you will get it for free!

You can create a “student account” (with an .edu email) to get a license to use the “Ultimate Edition”. Click here to apply for student license.


Download and install IntelliJ (Version: 2020.2) by following the instructions here.

Refer to this link for a rundown of what you will see when you run IntelliJ for the first time.


IntelliJ Plugins extend the functionality of the IDE. The general process to manage and install plugins are describe here.

Please install the following plugins:

After installing the plugins, restart the IDE.


We will provide detailed lecture notes using a static site builder tool called Overhead.

I’ve developed this tool haphazardly, so please be patient with potential bugs :pray:

It’s called Overhead as a reminder of the good old days when I was a student; we use to go to physical classrooms and our instructors used Overhead projectors!

Every lecture (and homework) will be provided to you as a static website. The content on the website replaces slides, readings, worksheets.

Each lecture is supplied with detailed learning outcomes. It is further divided into several “lessons” each aiming at one (or more) learning outcome(s). Some of the lessons involve exercises/activities. The solutions to those exercises will be released after each lecture; simply refresh the page when the class is over and the solution will be there.

Overhead is not design to be flashy! It is design to be minimal, neutral and out of your way so you can focus on the content.

You can use these shortkeys in Overhead:

Keys Event
shift + . Next lesson
shift + , Prev lesson
shift + / Lecture home
f Toggle fullscreen
s Show/hide solutions
r Show/hide resources
d Show/hide demo
v Show/hide video

Experimental features


As soon as you select a text, an annotator marker will pop up. You can use the annotator to highlight the text or to make notes.

Annotator does not have persistence; it is not backed by a database! Your notes/highlights are saved in the local storage of your browser. It will be earased when you clean your browsing data.


There is a floating “pen” on the left sidebar of every lesson. By clicking on it, you enable a transparent drawing canvas on top of the webpage. You can then use freehand drawing to jot down notes or sketch figures/diagrams.

Canvas has no persistence and it is cleared as soon as you hide it.

You can use the following shortkeys with canvas:

Keys Event
p Enable/disable canvas
1 Stroke color blue
2 Stroke color red
3 Stroke color black
4 Highlighter (orange)
5 Highlighter (green)
space Eraser
d Enable/disable drawing
arrow up Increase stroke width
arrow down Decrease stroke width


On lecture webpage, under “Download,”" select “All lessons combined into one HTML!”. This will open up, as the name suggests, all the sections (lessons) of that lecture as one (long) HTML page. You can then save this page as an html/pdf or print it out.

The solution/resources sections are not printed unless you press s/r to “open” them all.