CMSI [1-6]99


Students in good standing are permitted (and in some cases encouraged) to take one or two independent studies courses. Generally the independent studies course is one in an area for which no regular course is offered (e.g. Blockchain, Type Theory, Action Semantics, Artificial Life, Modal Logic, Constraint Programming) and in which you are genuinely interested.

This page has information for students wishing to do independent studies courses under my supervision. Other faculty members will no doubt have different requirements.


At the end of an independent studies course you will have attained mastery of the chosen subject matter to the degree expected from a student taking a traditional course for about the same number of units.

Independent studies courses do not necessarily require research that breaks new ground in a subject area. That’s nice, but not required. It is required for a thesis or dissertation, however.


The foremost requirement is that you do the proper amount of university quality work for the number of units you are taking. Do not expect a good grade for putting off everything until the last two weeks and hacking together a project.

You are expected to read at least:

You are required to generate:

During the semester:

On the last day of the semester, you are to submit a portfolio, either electronic (preferably a GitHub Wiki), or in a binder (with dividers), neatly organized, and containing, in order:

You must prepare yourself for a 15 minute informal “oral report” (I don’t want to call it an “oral exam”) in which we will discuss one-on-one what you have learned and what you have accomplished.


Your grade will be weighted on the following:

Your grade will be assigned on the quality according to the university grading system, which was, as of 2009, the following:

A (−)SuperiorSuperior
B (±)GoodSatisfactorily demonstrated potential for professional achievement in field of study
C (±)SatisfactoryPassed the course but did not do work indicative of potential for professional achievement in field of study

Some Past Courses

Here are some of the courses I’ve supervised in the past (U=undergraduate, G=graduate). The list isn’t necessarily complete. Not only have I likely forgotten a few courses, but I’ve also purposely left off all of the independent studies courses that are just like regular courses, taken by students that have transferred into the Computer Science major from another major or university, studied abroad, or have otherwise found the need to take courses out of sequence.

Spring 2019 Algorithms LaboratoryUSage Strieker, Merissa Tan, Evan Mitchell, Nico Raymundo, Sam Gibson, Donovan Moini, Ian Lizarda
Fall 2018
Type Systems in Programming LanguagesUJustin Torres
Mutual Distrust Cloud SystemsUJ Goocher
Spring 2018
Blockchain InternalsUMegan Karbowski
Embedded Systems and ControlsUAnthony Keba
Game DevelopmentUKevin Metelus
Python Scripting for Post-ProductionUNicholas Sy
Modern Web ApplicationsUCherrell Finister
GPU Architecture and ComputingGGurinder Chauhan
Spring 2017 Machine LearningUNatalia Dibbern, Juan Neri
Spring 2016 Survey of Modern Programming LanguagesUEileen Choe
Algorithms Laboratory IIUMattie Coccia
Mobile Application DevelopmentUMatt Flickner, Jeff Fennell
Fall 2015 Advanced Topics in Programming LanguagesUAlex Schneider
Internet Radio SecurityUAlex Schneider
Spring 2015 Game Programming in Unity 3DUGabriel Gonzalvez, Patrick Sullivan
Distributed ComputingUAlex Schneider
Fall 2014 Mind, Brain, and ComputationUJackson Souza
Spring 2014 Web Application ArchitectureURachel Rivera, Alex Schneider, Mattie Coccia, Stephen Smith
Algorithms LaboratoryURachel Rivera, Alex Schneider, Mattie Coccia, Andrew Akers
Spring 2013 Distributed Computing PracticumUAndy Won
Algorithms LaboratoryUJasmine Dahilig
Fall 2012 Computer NetworksUTyler Nichols, Eric Jaso
Spring 2012 Data Mining for Quantitative Financial AnalysisUMonty Zimmerman
Spring 2011 Web Application DevelopmentURich Mautino
Fall 2010 Address Resolution ProtocolGDaryoush Shokrgozar
Fall 2009 Enterprise Video Management UKelly Sutton
Logic, Language, and ComputationUKelly Sutton, Gary Hatter, George Chahrouri, Dan Moore
Spring 2009 Game Programming UChris Mueller
Scripting LanguagesGRich Rolston
Fall 2008 Game Programming UEvan Fishman
Computer NetworksUDerek Smith
Fall 2007 Enterprise Computing Architecture UKaniel Yano, Steve Smith, Michael Lovrovich
Scripting LanguagesULoren Abrams
Spring 2007 Scripting LanguagesUTim Lambert, Andrés Buriticá, Patrick Falls
Fall 2006 Enterprise Computing ArchitectureUAndrés Buriticá
Spring 2006 Enterprise Computing ArchitectureUMatt Werner, Mike Megally
Fall 2005 The Semantic WebG Paul Bull
Spring 2005 Wireless TechnologiesG Joephy Hoang
Internet TechnologiesU Matt Glaser, Dominick Guzzo, Jason Lake, Derek Springer
Fall 2004 Firmware TechnologiesU Mark Kolich
Network SecurityG Prabhu Anbanathan
Programming Language SemanticsG Brian Birmingham
Fall 2003 Advanced Design PatternsU Chris Kane, Zac Propersi
Spring 2003 Internet SecurityG Sinu Ranasinghe
RISC ArchitectureU Will Ready, Masahji Stewart, George Melika
Spring 2002 Advanced Three Dimensional GraphicsU Joey Davis, Vlad Galyuz
Fall 2001 Distributed SystemsU Bill Hamor
Spring 2001 Component TechnologiesU Zach Kuhn
Enterprise ComputingU John Sullivan
MicroprocessorsG Shoki Souri
Database SystemsG Shoki Souri
Fall 2000 Embedded Systems SoftwareG Robert Hayes
Spring 2000 Windows NT InternalsU Dirien Barcenas
Spring 1999 Realtime Design PatternsG James Sanchez
Fall 1997 Type Theory and Higher Order LogicG Robert Bauer
Internet TechnologiesU Caskey Dickson
Spring 1997 Modal and Temporal LogicsG Robert Bauer
Concurrent and Distributed ProgrammingU Neil Rotstan, Tony Shaheen
Three Dimensional Graphics with OpenGLU McKay Stewart
Spring 1996 Compiler Construction IIG Lida Soopikian
Spring 1995 Introduction to Three Dimensional RenderingU Michael Fair
Fall 1994 Object Oriented Design and EiffelG David Lacey
Summer 1994 Topics in Programming Languages: MLG Revital Elitzur
Spring 1994 Distributed Object-Oriented DatabasesG Eric Shulman
Fall 1993 Advanced Compiler DesignG Scott Karlin
Topics in Programming Languages: Ada 9XG Jodene Sasine
Summer 1993 User Interface DesignG Nils Sandoy
Spring 1993 Chaos and Fractal GeometryG David Coca
Fall 1992 Object Oriented Language ImplementationG Dean Allingham
Concurrent Programming in AdaG Dean Allingham
Software Engineering EnvironmentsU Masroor Malik
Object Oriented ProgrammingU Masroor Malik
Object Oriented DatabasesU Elias Kent
Spring 1990 Functional Programming LanguagesU Frances Thierot
Spring 1987 Software Engineering and AdaU Paula Bennett, Tim Prendergast