Course Syllabus

Course Description

The 91.204 Computing IV class introduces students to the state of the art of object-oriented program design and the techniques and tools used in modern software development. The course will survey a broad range of subjects in program design and development, including: object-oriented programming using Java, OO design patterns, UML modeling, build and debugging, unit testing, and documentation. Another focus of the course is to teach students the fundamentals of compiler/language translation using these OO programming techniques. Topics include language engineering basics, including regular expression, context-free grammar, intermediate representation and code generation. Students will get hands-on experiences by building working language processors targeting educational robots, using modern compiler construction tools and applying OO programming methodology.

The course consists of lectures, homework assignments, exams, and small to medium-size programming projects which will emphasize object-oriented design and development methodology. The goal of this course is to provide a good understanding of principles and techniques in modern OO software design and effective use of modern software tools in software development. After successfully finishing this course, students are expected to develop the following skill set:

  • understand and use OO design and programming methodology in program design and implementation using Java
  • understand and apply common design patterns
  • understand UML modeling and draw UML diagrams
  • understand unit testing and write test cases
  • use software tools to perform program build, debugging, testing and documentation
  • use modern IDE framework and integrated development tools
  • write event-driven programs
  • understand lexing and parsing, build language scanners and parsers using automatic tools
  • understand compiler intermediate representation and code generation, build simple lanugage processors

Course Prerequisites

CS 91.201 Computing III or equivalent. Students should be familiar with basic OO concepts and can program in one of the major OO languages, eg. C++. All programming assignments in this course will be done in the Java programming language; however, prior knowledge of Java is not mandatory and we will introduce the Java language during the course.

Textbooks

    Required Textbooks:
  • Introduction to Computing and Programming with Java: A Multimedia Approach by Mark Guzdial, Barbara Ericson, Prentice Hall, 2006.
  • Object-Oriented Software Development Using Java by Xiaoping Jia, 2nd Edition, Addison Wesley, 2003.
    The following books are recommended for Java, Design Pattern and OO methodology:
  • Java in a Nutshell by David Flanagan, 5th Edition, OReilly, 2005
  • Core Java 2, Volume I and II by C. Horstmann and G. Cornell, 7th Edition, Prentice Hall, 2004
  • Head First Design Patterns by Elisabeth Freeman, Eric Freeman, Bert Bates, Kathy Sierra, OReilly, 2004
  • Design Patterns: Elements of Reusable Object-Oriented Software by E. Gamma, et el, 1995, aka book by the gang of four. An OO classic on design patterns.
  • Object-Oriented Analysis and Design with Applications By Grady Booch, 1994, a must read on OOAD.

Assignments

There are about 10 homeworks in the form of programming assignments. All programming assignments will be done in Java. The assignments will count a total of 50 percent of your grade.

Exams

There will be a midterm examination and a final examination that will count 40 percent of your grade.

Class Participation

Students are expected to attend class meetings and participate in class discussions. Class participation will count 10 percent of your grade.

Grading

Your final score will be determined as follows:

  • Assignments: 50%
  • Midterm: 20%
  • Final Exam: 20%
  • Class Participation: 10%

Lateness policy:

You should submit your homework online (directions on the assignment page). The homework assignments are due at midnight and your submission files should have timestamp no later than that. The timestamp will be used to check your submission time.

To account for any unexpected event or delay, each student is granted a total extension pool of three late days during the semester. You can use these extension days for any of your turn-in. However, if you have used up all three days, no other form of extension will be granted and any late turn-in will be rejected with 0 grade for the assignment. So use the extension days judiciously and submit your turn-in on time.

Collboration policy:

You must do the homework assignments individually. You may discuss the concepts in any open forum but must not discuss the actual answers to the problems. You should be aware of proper academic attribution. If your homework contains unattributed answers that are substantially other persons' work then your course grade may be lowered between one and three letter grades. In cases of cheating on exams, or repeat offenses, the University's maximum penalty may be imposed.