Featured projects

All source code distributed on this website is licensed under the GNU GPL v3.
Source code distributed via my GitHub links may be licensed under other similar open source licenses.

Senior Thesis - Autonomous Surveillance and Security Drone

An autonomous unmanned aerial vehicle which can patrol an area and identify humans.

The drone includes a Raspberry Pi computer which controls it. The computer runs an on-board web server and a secure WiFi access-point running a controller web-application built with Python.

The web application uses the Google Maps API and allows for the drone to be sent to a GPS way-point, specify the speed and altitude, and specify a circuit for the drone to patrol.

The drone has a camera, and sends images to a computer connected to the drone’s WiFi network. This computer continuously processes images with OpenCV in Python to detect humans. Humans are identified using a Histogram of Oriented Gradients method conjunction with a Linear Support Vector Machine. When a person is detected, the machine sends an email to notify the user.

Auto Vulnerability Tester

An extensible automated vulnerability testing framework written in Python3 for CS460 at the University of Illinois at Urbana-Champaign.


  • Uses the nmap Python library to scan a given list of IP addresses.
  • Includes a website crawler which aggregates all URLs on a host to determine which URLs could potentially be vulnerable to different exploits.
  • Checks if vulnerabilities exist by non-maliciously attempting to exploit.
  • Includes metasploit auxiliary module support.
  • Writes vulnerability results to a json file (results.json) upon completion.

Vulnerabilities tested

The program tests for the following exploits:

  • Heartbleed
  • Shellshock
  • XSS vulnerabilities
  • (Optionally, if metasploit is used) A return to libc buffer overflow vulnerability

Demonstration Videos

AirTarget - Virtual Reality Research Flight Simulator

Final project for CS498 SL (Virtual Reality - Oculus Rift Development) at the University of Illinois at Urbana-Champaign.

As part of a team of 7 students, led by Reia Demont, we developed a collision detection/avoidance research flight simulator created in C#/Unity for the Oculus Rift. The project's goal was to create a simulator for a study to determine if flight training with virtual reality is beneficial to help pilots improve their avoidance skills. Each of us worked on separate portions and combined our code to create the final flight simulator.

For Reia's graduate studies, a controlled experiment was performed with the simulator with aviation students and non-pilots. Some were trained with the Oculus Rift beforehand and some were not. Using the study results and data from our individual write-ups, including my UML diagram, Reia completed a paper titled "High-Fidelity Simulator VS Low-Fidelity Virtual Reality Simulator".

You can view my portion of the code, the video I created demoing our simulator for the class, and my writeup containing an explanation of my work on the project here: http://njlochner.com/airtarget.html

For more information such as Reia's final paper, or full source code of the simulator, please contact me or Reia. I do not want to share without her permission.

Haskell Turing Machine

A Turing Machine simulator written in Haskell.

Takes in Turing Machine specifications consisting of a tape alphabet (String list), initial tape (String list), and a machine definition with states.
The Machine definition is a HashMap where the keys are states labeled with Strings, and the values are States.
The State definition is a HashMap where the keys are the symbols read in from the current tape position, and the values are Instructions.

The Instruction definition consists of:

  • A String, which is the label to write to the tape's current position.
  • A Direction, either TapeRight or TapeLeft to move the tape after writing
  • A String, which is the label of the next state. "HALT" should be entered when the program should terminate.

The example below is a machine which adds 1 to the binary number on the tape.
From: https://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/turing-machine/four.html

let alphabet = ["", "0", "1"]
let tape = ["1", "1", "1"]
let machine = H.fromList [
                        ("0",State (H.fromList [("",Instruction "" TapeRight "1"), ("0",Instruction "0" TapeLeft "0"), ("1",Instruction "1" TapeLeft "0")])),
                        ("1",State (H.fromList [("",Instruction "1" TapeLeft "2"), ("0",Instruction "1" TapeRight "2"), ("1",Instruction "0" TapeRight "1")])),
                        ("2",State (H.fromList [("",Instruction "" TapeRight "HALT"), ("0",Instruction "0" TapeLeft "2"), ("1",Instruction "1" TapeLeft "2")]))

PlanetGen RTS

A prototype real time strategy game developed with C++.

Features procedurally generated terrain using the diamond-square algorithm.

Download Windows executable

Source code is not available on this page. If you would like a copy of the source for any reason please inquire.


Portfolio for Subversion projects written with Ruby which was the initial iteration of this website.
Includes a file browser for all files in the projects, capable of showing past revisions.

Parses SVN log and list XML data to render the portfolio.
Also allows viewers to comment on each project, storing the comments in a MySQL database.
(The comment feature is disabled on this live website.)

You can view this in action by viewing my repository for my CSAir project, or my Java Chess project.

Source code is not available on this page. If you would like a copy of the source for any reason please inquire.


An airline management web application written in Python for CS242 at the University of Illinois.

Displays routes with a global map, allows user to modify routes, generate a flight plan with multiple routes and calculate distance and cost for the flight plan.

Also shows current weather information for airports in the United States.

Java Chess

Chess game written in Java for CS242 at the University of Illinois.

Includes a functional GUI using MVC architecture for two players locally.

Also includes a command line user interface and two custom fairy chess game pieces.

Download executable JAR

CS241 Programming Exams

Two digital programming exams written for CS241: Systems Programming at the University of Illinois while I was a course assistant in the Summer of 2014.

The exams tested students on C string manipulation, file I/O, system calls, POSIX threads, inter-process communication(signals, pipes), and networking.

Includes an autograder with unit tests to automatically grade the students' exams.

Source code is not available on this page. If you would like a copy of the source for any reason please inquire.

Android Shell

A simple shell for Android using the SDK (Java Standard Development Kit) and NDK (Native C Development Kit) created for CS241 systems programming Android examples while I was a course assistant.

Can be installed on any Android device as an APK and can execute any standard UNIX system utilities such as: ls, cat, uname, and ps.

It uses fork() and exec() in the native C code to do so, while writing output and receiving user input from the Java code.

It also supports the standard "cd" command to change the current working directory.

The shell prompt emulates Bash by showing the username, hostname, and current working directory.

Teamspeak 3 Music Bot

A chat bot written in C for TeamSpeak 3 which communicates with a server via a telnet interface.

Parses the chat for commands and broadcasts music from Youtube, Soundcloud, and other websites using youtube-dl and VLC.

Source code is not available on this page. If you would like a copy of the source for any reason please inquire.