Student Originated Software
Sherri Shulman
Neal Nelson
Richard Weiss
Math, Computer Science
Mon 10am-noon, 1pm-3pm
Tues 10am-noon, 1pm-3pm
Wed 10am-noon
Thu 10am-12pm, 1pm-3pm

This program allows the student to focus on the practical aspects of the development of a large software project by implementing their own project. In support of this we will study data structures (the heart of software development), analysis of algorithms (how to choose and evaluate the effectiveness and the efficiency of an algorithm), applied operating systems (allowing the students to gain experience in understanding and modifying a complex software system), concurrency (extending our understanding of complex systems to concurrent models), and software engineering (studying how collaborative and group software projects are implemented, what are the challenges, and what are some best practices).

Fall Textbooks
  • Data Structures, Algorithms, and Applications in Java by Sahni
  • Operating Systems by Stallings
  • Operating System Projects by Nutt
  • Software Architecture/networking articles (available online)
Spring Textbooks
  • Introduction to Algorithms, Third Edition: Cormen, Leiserson, Rivest, Stein ISBN: 978-0-262-03384-8
  • Unix Systems Programming: Communication, Concurrency, and Thread: Robbins/Robbins ISBN: 978-0-130-42411-2

Areas of Study
There are  4 threads of study:
  1. Data Stuctures (fall, winter) and Analysis of Algorithms (spring) (6 credits fall, 5 in winter and 5 in spring)
  2. Operating Systems (fall, winter), Concurrency (spring) (5 credits fall, winter, spring)
  3. Software Architecture (fall 3 credits), networking (winter 2 credits). security (spring 2 credits).
  4. Student Projects (2 credits fall, 4 credits in winter and 4 credits in spring)

There will be no partial credit within any thread. For specific detail about credit expectations see the student covenant and the syllabi.

Weekly Schedule

10:00 am to noon
Data Structures/Analysis, ACC/Sem 2 B 3109
Operating Systems, ACC
Data Structures/Analysis, ACC/Sem2 B 3109
Operating Systems, ACC
Prep Day
1:00 pm to 3:00 pm
Project Status Presentations ACC, Lib 2612
1:00-2:00 pm
ACC: topic TBD NEW!! NEW!! Undergraduate research seminar, Sem2 C3107 (1:00-3:00)
ACC (12:15-2:15)

General Information

Jan 4: Remember! Makeupt DS test first hour Wed. Jan 18: Project presentations at 11:00 Tues (Jan 19) morning.
Mar 9 Week 10 reminders:
  • Take home OS test. Due Thursday by 5 pm. You can collaborate with others for the purposes of understanding the problems, but each of your answers should be your own. You do not need to have completed the lab project to answer the questions: it is enough to understand the problem. But if you really don't know, don't hand wave: there will be no penalty for not answering labs that you haven't lookd at yet.
  • In class Data Structures final Wed 10 am.
  • Make sure your project blogs are up to date, and include a final summation on your winter achievements and throughts for the spring.
Mar 15 winter eval schedule
April 19: NEW! Undergraduate Research Seminar, Wed at 1:00 pm Sem2 C 3107
Posted May 26: Week 10 schedule:
  • No class Monday
  • Tues AM: Analysis (no concurrency). We won't do any NP problems as homework, but may go over a sample reduction proof. Also we'll go over the midterm answers and selected problems. We'll try to have time to do some smallish in-class problems. You should complete homework sets through Chapter 16 (through greedies.)
  • Wed am: Analysis test
  • Thursday all day: presentations (Bring in treats to share at the end of the day.)
  • Finish your concurrency work as well!!!
  • Seminar: finish your proof program.
Posted June 6: spring eval schedule