Course Description
In-depth study of software design and implemenation using a modern,
object-oriented language with support for graphical user interfaces
and complex data structures.
Topics covered will be specifications, design patterns,
and abstraction techniques,
including typing, access control, inheritance, and polymorphism.
Students will learn the proper engineering use of techniques such
as information hiding, classes, objects, inheritance,
exception handling, event-based systems, and concurrency.
This course is part of the
Software Engineering Minor.
Course Materials
Assignments
Homework is due weekly on Tuesdays.
Homework assignments will be made public on the
course web page.
Submissions and grading will be done via
Blackboard.
Important:
Please submit a paper copy as well
as the electronic version.
This will make it easier for me to grade your assignments
and provide a space for me to give handwritten comments.
Details about specific requirements for each assignment
are given with each assignment.
As appropriate, I will present sample solutions in class or on the web.
From time to time, I may post an exceptional student solution as
the sample.
Quizzes
Each Thursday class begins with a short quiz.
Each quiz covers material from the previous session(s).
I have not yet decided whether quizzes will be incorporated
into blackboard or published on the course web page.
The goal of the quizzes is to keep students abreast of the material
covered in class. Because of the quizzes, there is no midterm exam.
Missed Homework and Quizzes
In recognition of the fact that many students have
occasional but unavoidable commitments that preclude attendance
at every class,
I drop each student's three lowest scores prior to final grade computations.
I select the combination of homework and quiz scores
most advantageous to the student.
For example, I may drop drop 2 quiz scores and 1 homework,
or 3 homeworks, or any other combination totaling 3.
In view of this policy,
late homework is not accepted
and
there are no make-up quizzes.
Please do not ask for an exception.
Final Exam
A final exam is held during the University-scheduled exam period.
Honor System:
Students are reminded that the honor system governs all work turned in
for credit. Each assignment must be worked on individually. A submission
carries with it an implicit statement that the submission is your own work.
You may discuss the requirements and syntactical issues, but not solutions
or designs. Collaboration is not allowed on the quizzes or on the final.
I will refer violators to the GMU Honor Committee according
to the procedures given in the GMU Course Catalog.
Further details available at the
CS Department's Honor Code
page.
Grading
Grades are computed as: Assignments (33%), Quizzes (33%), Final (34%).
Updates
As the semester progresses, I post notices about changes
to the course
updates page (link to be provided later).
ABET Accreditation notice:
The CS department is preparing for ABET re-accreditation
in the 2009-2010 academic year,
and the University as a whole is preparing for SACS reaccreditation.
One of the ABET requirements is that
course syllabi are required to include "Course Outcomes".
Course outcomes:
-
Demonstrate knowledge of how to apply
object-oriented specification and analysis techniques to C++ and Java programs.
-
Demonstrate ability to specify object-oriented contracts, both as
comments and with tools (eg JavaDoc).
-
Demonstrate knowledge of specification and implemenatation of exception handling in Java and C++ programs.
-
Demonstrate ability to apply UML modeling to Java and C++ programs.
-
Demonstrate knowledge of the object creation and destruction issues
in Java and C++.
-
Demonstrate knowledge of impact of inheritance on analysis of common
method contracts.
-
Demonstrate knowledge of consequences of mutability decisions in object-oriented programs.
-
Demonstrate knowledge of generics in programming C++ and Java.
Note
This syllabus is a draft. Revisions are likely.
I'll post a definitive syllabus by the first class.