George Mason University
Department of Computer Science

SWE 510 - Object-Oriented Programming in Java - Spring 2011
Section 001: (12501) Thu. 7:20-10:00, Krug Hall 242
Syllabus version as of 2011-02-02

Dr. David A. Wheeler, Adjunct Professor
Office: By appointment


TA: Aniket Kharat
Office Hours: 3-4pm Thursdays & by appointment

Catalog Description:

SWE 510 Object-Oriented Programming in Java (3:3:0). Prerequisite: Undergraduate courses or equivalent knowledge in programming in a high-level language. This course introduces students to programming in the Java language. Topics include problem-solving methods and algorithm development, program structures, abstract data types, simple data and file structures, and program development in a modular, object-oriented manner. Introductory use of OO language features, including data hiding, inheritance, polymorphism, and exception handling. Goals include design and development of Java classes and class type hierarchies. An introduction to Java servlets and applets is included. Emphasis on program development is reinforced through several programming projects. Credit cannot be applied to any graduate degree in IT&E or the BS degree in computer science.


On completion of the course, students should:

·        Have a good understanding of the principles and concepts of object-oriented programming;

·        Be able to solve computation problems in an object-oriented manner;

·        Be able to apply object oriented concepts, such as inheritance, polymorphism, abstract classes and interfaces, and packages in program design; and

·        Be able to describe the program design using a notation that is based on Unified Modeling Language (UML).

Required Textbook:

Savitch, Walter, Absolute Java, 4th Edition, Addison Wesley, ISBN: 978-0136083825.  Please get your own copy; in a pinch, one copy of the text is on reserve at the Johnson Center Library and may be borrowed for 2 hours at a time using call number QA76.73.J38 S265 2010.

Other References:

Grady Booch, James Rumbaugh, and Ivar Jacobson, The Unified Modeling Language Users Guide, 2nd Edition, Addison-Wesley, 2005.

Grading Policy:





Four assignments, see below.


Midterm Exam


March 24


Final Exam


May 12

Late assignments grading policy:

·        An assignment that is submitted late but before the TA sends back the grades:  The assignment would be graded out of 80% of the assignment total.

·        An assignment that is submitted late after the TA sends back the grades:  The assignment would be graded out of 60% of the assignment total.  If it’s more than a week after the TA sends back grades, it will not normally be accepted (talk to me if you have extraordinary circumstances).

Talk to me ahead-of-time if you have an anticipated absence that will interfere with class (especially exams), e.g., a non-work religious holiday, out-of-town travel for work, GMU athletic meet, and so on.

Web presence:

I have set up a Blackboard 9 area for the class where the presentations, syllabus, and other material will be placed.  As they are updated for any reason, the updates will be placed there as well.  To get there, open:

Select the “Courses” tab (on the top right of the page), look in the middle area, and select “201110.12501: SWE-510-001 (Spring 2011)”; this is a blackboard version 9 area.  I know that Firefox works well as a web browser for it.

Do not select the right-hand-side “CE Course List” and/or any other link beginning with <>.  The system is the old Blackboard version 8 system, which is not the system we are using.  If you try to use this (wrong) system, it will eventually say that the course area is blank (which it is, because you are using the wrong one). The old one may first complain that the certificate has expired.

Plan of Topics to be covered


Reading that week & module to be presented that day




Read & understand chapters 1 (Getting Started) & 2 (Console Input and Output).  Also, set up your Java development environment!  Presented that day: Module 1W & Module 3


Chapter 3 (Flow of Control), Module 4


Chapters 4 & 5 (Defining Classes), Module 4W [based on Module 2 & 2-2]


Chapters 6 (Arrays) & 7 (Inheritance); Modules 5 & 6.  DUE: Assignment #1


Chapter 8 (Polymorphism and Abstract Classes); Module 7


Chapter 9 (Exception Handling); Module 8.  DUE: Assignment #2


(No class, Spring break)




Chapter 10 (File I/O); Module 9


Chapter 11 (Recursion) & Chapter 12 (UML and Patterns); Module 10 + UML/Pattern material


Chapter 13.1 (Interfaces), 14 (Generics and the ArrayList Class).  DUE: Assignment #3


Chapter 15 (Linked Data Structures)


Chapter 16 (Collections, Maps and Iterators); Module 11


Chapter 17.1-17.2 (Event-Driven programming/GUI Swing basics) & Chapter 19.5 (Web programming).  DUE: Assignment #4



The schedule and topics to be covered is subject to change to best serve the needs of the class.  The “modules” are the presentations.  My plan is to give a presentation, and for you to then read the book; the presentations will tend to cover the important and potentially-confusing topics, so that when you read the book you’ll be better prepared.  (This is a different approach than some other courses, but I think it will be effective.)  Some draft presentations (modules) are already available, though I may update them before they are presented.

Please do the “self-test exercises” in each chapter, and compare them with the answers at the end of each chapter.  These exercises will not be reviewed or graded, but they will help you understand the material (and notice when you don’t!).  Do read the “starred” items (this is a graduate class).

For general GMU information, see the 2011 spring calendar at:

Java software development environment

As soon as possible, set up a Java software development environment, so you can develop and test Java programs.  Do not wait.  Once you think you have a working environment, try to compile and run a simple “Hello World” application so that you can get things working.  Here’s a Java implementation of “Hello World”:

class HelloWorldApp {
    public static void main(String[] args) {
        System.out.println("Hello World!");

For many, an easy way to create a Java software development environment is to use a personal computer you already have access to (typically running Linux, Unix, Microsoft Windows, or MacOS), and install the Java Software Development Kit (SDK) Standard Edition (SE) from Oracle (nee Sun).  You can get a Java SDK SE at <>.  The same site has installation instructions; follow them.  Note that you need the SDK, not just the Java Runtime Environment (JRE).  The JRE lets you run programs, but we will be creating programs not just running them.  This works on a variety of environments.  They provide Linux versions, but Linux users may find it easier to download and install a Java development environment using their package management system (e.g., “yum” for Red Hat Enterprise Linux, Fedora, and Novell SuSE; “apt-get” for Debian and Ubuntu).  There are other Java implementations; you can use them, but be sure they implement Java 5.

You need a way to edit Java source code.  Unix systems (including MacOS) have lots of great text editors available, just use one of them.  Windows users could use the text editor “Note Pad”, but it’s terrible, and WordPad (if you have it) is only marginally better.  For Windows, the book CD’s trial version of “TextPad” (in \AdditionalIDEs\TextPad_TRIAL) is a simple editing environment; you can edit files, and choose Tools/External Tools to compile or run Java programs.  There are shortcut keys; control-1 is “compile” and control-2 is “run application”.  Warning: After editing, be sure to compile before running; running the program runs the last compiled version (not necessarily what you just edited).  Be sure that every source file has the name of the outer class (with the same upper/lowercase) followed by “.java” – for example, “”.

Some developers prefer to use a graphical Interactive Development Environment (IDE).  A very popular IDE for Java is Eclipse, which is open source software (OSS).  You can download it from <>; you probably want the “Eclipse IDE for Java Developers” (an alternative is the “Eclipse IDE for Java EE Developers”; that would work fine, but includes a lot of extra components that you don’t need for the class).  It’s a good IDE, but beware that it may take you extra time to learn how to use the IDE!  The Eclipse documentation is at <>.  On a Linux system, just install the eclipse package.  On Windows, unpack the “.zip” directory to some directory (I suggest “C:\eclipse”); to run it you run the “eclipse.exe” program inside (you can create a shortcut to this to make it easier).  When you first run it, it will ask for a “workspace” directory.  Try out the built-in Eclipse Java tutorial, which will show you how to do basic stuff (like use File->New->Java Project to start a new project). Some videos you may find helpful are at <>.

If you don’t want to use your own system, you can use GMU’s research systems, such as or an IT&E computer lab account.  For more info, see <> and <>.


GMU Honor Code. Please Read.

IEEE and ACM codes of ethics are at these URLs:

Do not plagerize.  Plagerism is copying anyone else’s work and claiming it as your own work.  For assignments, do your own work and do not copy anyone else’s work (including from classmates and the Internet).

Miscellaneous notes

In class, please pay attention and don’t distract others. Please configure cell phones to vibrate, and if you use a laptop to take notes, please don't surf the net (unless told otherwise).

If you have a learning or physical difference that may affect your academic work, you will need to furnish appropriate documentation to the Office of Disability Services (ODS); you can contact them at or at 703-993-2474. If you qualify for accommodation, the ODS staff will give you a form detailing appropriate accommodations for your instructor (me).

2010-2011 by Dr. Moataz Ahmed & Dr. David A. Wheeler, Department of Computer Science, George Mason University

This syllabus was originally developed by Dr. Moataz A. Ahmed, Adjunct Professor,