CS 340 - Software Design


Fall 2012

University of Illinois at Chicago

Version: August 13, 2012


Time:
  • Weds: 12-12:50p
  • Tues and Thurs: 12:30-01:45p

Place:
  • 138 SES

Instructor & TA Contact Info:

Jason Leigh
Phone: (312) 996-3002
Office: Room 2032, Engineering Research Facilities Building (842 W Taylor St)
Home Page: www.evl.uic.edu/spiff
Office Hours: 2032 ERF: Thursdays after class till 3pm

TA:

Yile Wang
Office Hours: 1306 SEO: Thursday 2pm-4:30pm

Course Description (from the catalog):

Programming language semantics, scope, overloading, data abstraction, constructors. Procedural and object-oriented design, programming tools and environments. Interactive application structure and interface, windows, events, widgets.

For Starters:

For starters please fill out the following survey.

Please also join this class discussion group on Lore.com. Important notices will be posted there.

Please download the following software:
  • Qt (grab the full framework which includes libraries, and Qt Creator).

Course Requirements:

    CS 202

Textbooks & Resources:

You do not need to buy textbooks for this class (unless you really want to) because it is available digitally through UIC's library proxy. Welcome to the future!

To gain access to the textbooks:
  • Go to the Safari Online website via the UIC Proxy Page. Login to the proxy using your ACCC ID and password.
  • Once there you can look up the following books (or any book that happens to be available):
    • Practical C++ Programming by Steve Oualine
    • Essential C++ by Stanley Lipman
    • C++ in a Nutshell by Ray Lischner
    • Head First Design Patterns by Eric Freeman; Elisabeth Robson; Kathy Sierra; Bert Bates
    • Pro Git by Mario Danic
If you really want to buy the physical textbooks I recommend you order them on Amazon since these books are probably not available at the UIC bookstore. But since I haven't decided yet which book to use, I recommend you just read the online version for now.

Administrative Stuff:

  • No exams for this class. Yeah you read it right. Don't make me regret it!

  • No late assignments accepted. Forget it, don't even try come up with some excuse. Most assignments give you at least a month to work on them.

  • Cheating! Bad! Don't do it. If I catch you copying someone else's work, you will face disciplinary action (you know public humiliation, canning, banishment, that sort of thing). There are programs like MOSS that are really good at catching stuff like that, so spend the effort and do the work rather than cheat. It'll just ruin your career in the long run.

  • If your programs don't compile your grade for the program is zero, zip, nadda, end of discussion.

  • If your program crashes and prevents us from testing portions of your assignment then you lose points for the portion we can't test. In general it's not good for your program to crash. It just makes the TA mad and he'll take it out on your grade.

  • For each program you are required to have:

    • README.html to explain how to compile and launch it.

    • Instructions.html to explain how to actually operate the program once running.

    • Design.html that describes at a high level the software design of your program. E.g. how have you partitioned the program across files, and how have you designed the C++ classes and why.

  • No incompletes unless your current performance in class is at least a B and you have a really good excuse.

  • No extra work is allowed to make up for poor performance. I have to treat everyone equally.

  • Attendance is up to you. You're an adult and besides, you're paying for the class. There's an African proverb that says: "Those who are absent are always wrong..."

Course Assignments:

Generally there will be 4 assignments for a total of 100 points.
  • Assignment 1: [5 points] Project proposal descriptions.
  • Assignment 2: [25 points] Mini-presentation on topic in Software Design (15 minute presentations).
  • Assignment 3: [70 points] Team up with someone to develop something of interest to your team. This year's theme will be mobile apps. Maximum team size of 4 only (25 minute final presentations).

Course Topics and Tentative Schedule / Due Dates:

Dates are tentative depending on how quickly we move through materials and class size.

  • Week 1
    • C++ in a nutshell
    • Aug 28
    • Aug 29
    • Aug 30
  • Week 2
    • Intro to Qt
    • Sept 4
    • Sept 5
    • Sept 6
  • Week 3
    • Programming Style
    • Agile Software Development
    • Working in Teams, Version Control
    • Sept 11
    • Sept 12
    • Sept 13
      • Assignment 1 due: Submit project ideas
  • Week 4
    • Design Patterns
    • Sept 18
    • Sept 19
    • Sept 20
      • Submit proposal for Assignment 2- Mini-Talks
  • Week 5
    • Qt Graphics
    • Thread Programming
    • Sept 25
    • Sept 26
    • Sept 27
  • Week 6
    • Network Coding
    • Cloud Computing
    • Oct 2
    • Oct 3
    • Oct 4
      • Project Review A1: 5 groups (15 minutes)
  • Week 7
    • Oct 9
      • Assignment 2: Mini-Talk 1-5 (15 minutes)
    • Oct 10
      • Assignment 2: Mini-Talk 6-8
    • Oct 11
      • Project Review A2: 5 groups
  • Week 8
    • Oct 16
      • Assignment 2: Mini-Talk 9-13
    • Oct 17
      • Assignment 2: Mini-Talk 14-15
    • Oct 18
      • Project Review A3: 5 groups
  • Week 9
    • Oct 23
      • Assignment 2: Mini-Talk 16-20
    • Oct 24
      • Assignment 2: Mini-Talk 21-23
    • Oct 25
      • Project Review B1: 5 groups
  • Week 10
    • Oct 30
      • Assignment 2: Mini-Talk 24-28
    • Oct 21
      • Assignment 2: Mini-Talk 29-31
    • Nov 1
      • Project Review B2: 5 groups
  • Week 11
    • Nov 6
      • Assignment 2: Mini-Talk 32-36
    • Nov 7
      • Assignment 2: Mini-Talk 37-39
    • Nov 8
      • Project Review B3: 5 groups
  • Week 12
    • Jason on travel - No class
    • Nov 13
    • Nov 14
    • Nov 15
  • Week 13
    • Nov 20
      • Assignment 2: Mini-Talk 40-44
    • Nov 21
      • Catchup on presentations
    • Nov 22
      • Thanksgiving- no class
  • Week 14
    • Nov 27
      • Final Project Presentation for Groups 1, 2, 3 (25 minutes)
    • Nov 28
      • Final Project Presentation for Groups 4, 5
    • Nov 29
      • Final Project Presentation for Groups 6, 7, 8
  • Week 15
    • Dec 4
      • Final Project Presentation for Groups 9, 10, 11
    • Dec 5
      • Final Project Presentation for Groups12, 13
    • Dec 6
      • Final Project Presentation for Group 14- Tour of CAVE2
      • ASSIGNMENT 3: FINAL PROJECT DUE
  • Finals week
    • Study for your other midterms!