CS 340 - Software Design


Fall 2011

University of Illinois at Chicago

Version: September 25, 2011


Time:
  • Weds: 11-11:50p
  • Tues and Thurs: 11:00-12:15p

Place:
  • 2068 ERF
  • Not LCA A006.
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: Tuesdays after class till 3pm

TA:

Huy A. Bui
Office Hours: Tues, Weds, Thurs: 2:00-3:00p in the CS Lab (2260 SEL).

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.

But I'm hoping to do something more fun!

For Starters:

For starters please fill out the following survey.

Then fill out this form to request WiFi access within 2068 ERF. (Note: this is not the same as ACCC WiFi).

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

Go to this website to request a Cloud Computing account. Please do this ASAP since it will take them a lot of time to do a background check. Under Usage Description write:

I am a student of Professor Jason Leigh's CS 340 (Software Design) class at the University of Illinois at Chicago (spiff@uic.edu). I intend to use my account to run parallel sorting codes with Hadoop and examine how it scales as I increase the number of Cloud nodes used. My assigment begins on September 20 so it would be helpful if I could obtain an account by that time. Thank you so much for your assistance.

Please download the following software:

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: [20 points] Cloud Computing.
  • Assignment 3: [20 points] Mini-presentation on topic in Software Design.
  • Assignment 4: [55 points] Team up with someone to develop something of interest to your team. E.g. iphone or Android programming. Maximum team size of 2 only.

Course Topics and Schedule / Due Dates:

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

  • Week 1
    • Aug 23
    • Aug 24
    • Aug25
    • C++ in a nutshell
  • Week 2
    • Aug 30
    • Aug 31
    • Sept 1
    • Intro to Qt
  • Week 3
    • Sept 6
    • Sept 7
    • Sept 8
    • Programming Style
    • Agile Software Development
    • Working in Teams, Version Control
  • Week 4
    • Sept 13
    • Sept 14
    • Sept 15
    • Design Patterns
    • ASSIGNMENT 1 DUE: PROPOSE PROJECT IDEAS
  • Week 5
    • Sept 20
    • Sept 21
    • Sept 22
    • Thread Programming
    • Cloud Computing
      • What is Cloud Computing
      • Getting an account on the Illinois Cloud Testbed or Amazon
      • How to use the ICT or Amazon
      • How to write sort with Hadoop Map Reduce
      • How to run it
      • How to gather performance data
    • ASSIGNMENT 2 RELEASED: CLOUD COMPUTING
  • Week 6
    • Sept 27
    • Sept 28
    • Sept 29
    • Network Coding
    • ASSIGNMENT 3 DUE: SUBMIT PROPOSAL FOR MINI-TALKS ON SOFTWARE DESIGN
  • week 7
    • Oct 4
    • Oct 5
    • Oct 6
    • Qt Graphics
  • Week 8
    • Oct 11
    • Oct 12
    • Oct 13
    • Students work on projects and use class time to meet
  • Week 9
    • Oct 18
    • Oct 19
    • Oct 20
    • PROJECT DESIGN DOCUMENTS & CODE REVIEWS BEGIN- Teams chosen randomly
    • ASSIGNMENT 2: CLOUD ASSIGNMENT DUE
  • Week 10
    • Oct 25
    • Oct 26
    • Oct 27
    • PROJECT DESIGN DOCUMENTS & CODE REVIEWS continue
  • Week 11
    • PRESENTATIONS BEGINS
    • Nov 1
      • Presentations by class 1-2
    • Nov 2
      • 3-4
    • Nov 3
      • 5-6
  • Week 12
    • Nov 8
      • 7-8
    • Nov 9
      • 9-10
    • Nov 10
      • 11
  • Week 13
    • SC2009 - Nov 14-18- Jason out of town
    • Nov 15

    • Nov 16

    • Nov 17

  • Week 14
    • SPARE TIME TO WORK ON CODE
    • Nov 22
    • Nov 23
    • Nov 24 - Thanksgiving- no class
  • Week 15
    • ASSIGNMENT 4: FINAL PROJECT PRESENTATIONS- 10 Presentations for 10 groups
    • Nov 29
      • Presentation for Project 1-2
    • Nov 30
      • Presentation for Project 3-4
    • Dec 1
      • Presentation for Project 5
    • ASSIGNMENT 4: FINAL PROJECT ASSIGNMENT DUE
  • Finals week
    • NO EXAMS
    • Final exams Dec 7-11- Jason out of town