CMSI [1-6]99
INDEPENDENT STUDIES
Information for Students
Overview
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. 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.
Objectives
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.
Requirements
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
- Most of one or two classic textbooks in the subject area
- Two professional-oriented books (e.g. from O'Reilly or
Prentice-Hall PTR)
- Six (preferably more) papers from journals or conference
proceedings. Half can be "classic" papers that started the
discipline; the rest should cover modern topics.
- Twenty or so encyclopedia articles on topics in your
area. Wikipedia is okay, but try others. Blog entries
by famous people (Martin Fowler, James Gosling) are okay
if they are long enough.
You are required to generate:
- Answers to 40-60 textbook problems. Avoid the trivial
"Check your Understanding" type of questions that generate
one to ten word answers. Half the problems, though, can
be of the short answer or "solve a relatively easy math problem"
variety; the rest should require 15 or more minutes of thought.
- A book review (3-5 pages)
- A short paper (5-6 pages) overviewing or summarizing
the subject area. Cover the major players in the field
and the current uses of the technology today.
- A longer paper (10 pages) in which you describe
one of the problems you are working on in your project.
The paper will have code fragments in it.
- A project, and associated documentation (top-level
architecture diagrams, etc.)
- A reading list, in bibliography format, of 40 or so
sources that are important in your area. You do not have
to read all of them, but you do have to put together a useful
list. I assume you will acquaint yourself with at least
some of them. (Don't stuff this list with web sites.)
During the semester:
- Each week, send me a very short email with a bullet-point summary
of what you did all week (a progress report of sorts). If you
prefer, you may keep a blog instead, as long as it is updated
frequently.
- Meet with me every two weeks to discuss your progress.
On the last day of the semester, you are to turn in a binder
(with dividers), neatly organized, and containing, in order
- Title Page
- Table of Contents
- One page summary of the course
- List of the books you read
- Reprints of six of the journal articles
- Book review
- Your short paper
- Your long paper
- Exercises and solutions
- Overview of your project architecture (UML diagrams
and links to the code)
- Selected printouts of portions of your code (10-20 pages,
2 up)
- The reading list
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.
Grading
Your grade will be weighted on the following
- 80% on the portfolio, as described above
- 10% on the timeliness and quality of your weekly reports
(and blog, if you choose to do one)
- 10% on your final oral report
Your grade will be assigned on the quality according to
the university
grading
system, which was, as of 2009, the following:
| Grade | Undergraduate | Graduate |
| A (−) | Superior | Superior |
| B (±) | Good | Satisfactorily demonstrated potential for professional achievement in field of study |
| C (±) | Satisfactory | Passed the course but did not do work indicative of potential for professional achievement in field of study |
| D | Poor | |
| F | Failure | Failure |
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.
- Fall, 2009
- Enterprise Video Management (U) —
Kelly Sutton
- Logic, Language, and Computation (U) —
Kelly Sutton, Gary Hatter, George Chahrouri, Dan Moore
- Spring, 2009
- Game Programming (U) —
Chris Mueller
- Scripting Languages (G) —
Rich Rolston
- Fall, 2008
- Game Programming (U) —
Evan Fishman
- Computer Networks (U) —
Derek Smith
- Fall, 2007
- Enterprise Computing Architecture (U) —
Kaniel Yano, Steve Smith, Michael Lovrovich
- Scripting Languages (U) —
Loren Abrams
- Spring, 2007
- Scripting Languages (U) —
Tim Lambert, Andrés Buriticá, Patrick Falls
- Fall, 2006
- Enterprise Computing Architecture (U) —
Andrés Buriticá
- Spring, 2006
- Enterprise Computing Architecture (U) —
Matt Werner, Mike Megally
- Fall, 2005
- The Semantic Web (G) — Paul Bull
- Spring, 2005
- Wireless Technologies (G) — Joephy Hoang
- Internet Technologies (U) — Matt Glaser, Dominick Guzzo,
Jason Lake, Derek Springer
- Fall, 2004
- Firmware Technologies (U) — Mark Kolich
- Network Security (G) — Prabhu Anbanathan
- Programming Language Semantics (G) — Brian Birmingham
- Fall, 2003
- Advanced Design Patterns (U) — Chris Kane, Zac Propersi
- Spring, 2003
- Internet Security (G) — Sinu Ranasinghe
- RISC Architecture (U) — Will Ready, Masahji Stewart, George Melika
- Spring, 2002
- Advanced Three Dimensional Graphics (U) — Joey Davis, Vlad Galyuz
- Fall, 2001
- Distributed Systems (U) — Bill Hamor
- Spring, 2001
- Component Technologies (U) — Zach Kuhn
- Enterprise Computing (U) — John Sullivan
- Microprocessors (G) — Shoki Souri
- Database Systems (G) — Shoki Souri
- Fall, 2000
- Embedded Systems Software (G) — Robert Hayes
- Spring, 2000
- Windows NT Internals (U) — Dirien Barcenas
- Spring, 1999
- Realtime Design Patterns (G) — James Sanchez
- Fall, 1997
- Type Theory and Higher Order Logic (G) — Robert Bauer
- Internet Technologies (U) — Caskey Dickson
- Spring, 1997
- Modal and Temporal Logics (G) — Robert Bauer
- Concurrent and Distributed Programming (U) — Neil Rotstan, Tony Shaheen
- Three Dimensional Graphics with Open GL (U) — McKay Stewart
- Spring, 1996
- Compiler Construction II (G) — Lida Soopikian
- Spring, 1995
- Introduction to Three Dimensional Rendering (U) — Michael Fair
- Fall, 1994
- Object Oriented Design and Eiffel (G) — David Lacey
- Summer, 1994
- Topics in Programming Languages: ML (G) — Revital Elitzur
- Spring, 1994
- Distributed Object-Oriented Databases (G) — Eric Shulman
- Fall, 1993
- Advanced Compiler Design (G) — Scott Karlin
- Topics in Programming Languages: Ada 9X (G) — Jodene Sasine
- Summer, 1993
- User Interface Design (G) — Nils Sandoy
- Spring, 1993
- Chaos and Fractal Geometry (G) — David Coca
- Fall, 1992
- Object Oriented Language Implementation (G) — Dean Allingham
- Concurrent Programming in Ada (G) — Dean Allingham
- Software Engineering Environments (U) — Masroor Malik
- Object Oriented Programming (U) — Masroor Malik
- Object Oriented Databases (U) — Elias Kent
- Spring, 1990
- Functional Programming Languages (U) — Frances Thierot
- Spring, 1987
- Software Engineering and Ada (U) — Paula Bennett, Tim Prendergast