22c:22 Object-oriented Software Development


TTh 10:55-12:10  in E205 Adler

...plus discussion sections:
  1) F 1:30 in 113 MLH
2) F 2:30 in 114 MLH
 


The instructor

Gregg Odén
   [MW 10:30 in E112 SSH, T 2:30 in 201D MLH]
   gregg-oden

with the assistance of...

   Matt Gibson
    [tba in 201C MLH]
    matthew-gibson

 



The course

The objectives of this course are to introduce software development methodology with continued emphasis on the separation of abstraction and implementation, and to extend programming skills generally and with specific regard to network programming, concurrency, graphics, and user interface programming. The course focuses on developing professional-level programming competence, especially the ability to construct correct programs and to use advanced program development techniques effectively. The course emphasizes the object-oriented paradigm and associated concepts of classes, objects, methods, inheritance, and polymorphism. This course provides a continuation of the presentation of skills and knowledge necessary for effective software development building upon the basic competence students gained in 22C:016.


The assignments

There will be two midterm exams each covering one section of the course as shown on the schedule and a final exam covering the third section plus the course as a whole. In addition, there will be homework assignments every week or so for the first half of the course and then, during the rest of the semester, a team-based course project. Exam 1 will count 10% toward the course grade, Exam 2 will count 20%, the final exam will count 30%, and the homework and the project together will count 40%.

Course grades will be determined on the basis of the resulting final distribution of numerical scores. My current expectation is that about a sixth or so of those originally enrolled in the class will get A grades (that is, A+, A or A-), about a third will get B grades, and another third will get C grades. However, these proportions will be adjusted to reflect overall class performance. That is, if it turns out that this class does better than expected, then there will be more good grades; if it does worse, then there will be fewer good grades. I will periodically provide updated information about the expected distribution of grades as we go along through the semester so you will have a good idea of where you stand.


The schedule

week topics reading

Section I
1 The craft of software development; the analysis phase C: 3.1-4, 20.1, 27.1-4

2 Software Modes I & II: scripting and interactive programming R: 2, 14, 15 (4-7)

3 Object-based programming R: 3, 9 (4-7); C: 31, 32

4 Object-oriented programming R: 23, 24 (4-7); C: 6

5 The Human Side I: Human-computer interaction

EXAM 1: Tuesday February 26

Section II
6 Design and Construction I: program components C: 5, 7, 10, 14-16

7 Software Modes III: stand-alone event-driven applications R: 19

8 Apps (continued)

9 The Human Side II: Project management and processes C: 21, 24, 27.5, 28, 29, 33

10 Debugging, and verification C:22, 23

EXAM 2: Tuesday April 8

Section III
11 Design and Construction II: program architectures C: 3.5

12 Exception handling R: 8, 12, 13; C: 8

13 I/O programming and data persistence R: 10, 18, 26

14 Concurrent programming R: 11

15 Software Modes IV: web applications

FINAL EXAM: Tuesday May 13 at 9:45am in AJB E205


The texts

         





Programming Ruby
(2nd Ed.)
by Dave Thomas...

     





Code Complete
(2nd Ed.)
by Steve McConnell





The fine print

  1. I would like to hear from anyone who has a disability which may require seating modifications or testing accommodations or accomodations of other class requirements, so that appropriate arrangements may be made. Please contact me during my office hours.

  2. Both students and professors have rights and responsibilities. One responsibility that we share is to be familiar with College of Liberal Arts and Sciences policies regarding procedures to be followed in the event of your misconduct or mine. These policies can be found at the College's website. In general, please do not hesitate to discuss with me any questions or concerns you may have. If, in addition, you would like to talk with the department chairman, Dr. James Cremer, appointments can be made with the staff in the department office, 14 MLH.

  3. Sexual harassment subverts the mission of the University and threatens the well-being of students, faculty, and staff. For definitions, assistance, and the full policy, refer to www.sexualharassment.uiowa.edu .

  4. If a tornado or other severe weather is indicated by the National Weather Service radar, the UI outdoor weather sirens will sound. The class will seek appropriate shelter immediately, continuing class if possible when the event is over.

  5. You are expected to honor copyright laws pertaining to use of software packages that are available to you in the labs and in any other situation in this course.

  6. Grades (and lots of other stuff) will be posted on Icon.

  7. Makeup exams will be provided only for documented legitimate reasons.

  8. Class attendance will not be recorded but the most important stuff will happen in class.

  9. The ruby image at the top of this page is from why's (poignant) guide to Ruby.

  10. This syllabus is available at http://www.cs.uiowa.edu/~oden/courses/cs22.html and on Icon.