About
Announcements
Lectures
Coursework
FAQ
Java 1.6 API
Java 1.4 API
|
- Instructor:
Prof. Rahul Simha

- Time/place:
- Class: Wednesdays, 3.30-6.00pm, Tompkins 411.
- Lab: (1) Mondays, 9-10.15, Tompkins 411;
(2) Mondays, 2.20-3.35, Tompkins 411.
- Office Hours: Tuesdays 3-5pm, Phillips 717.
- TA: Ingrid Mihai (ingrid AT gwu DOT edu).
- TA Office Hours: 10-12pm Tuesdays, 12-2 Fridays,
Phillips 725.
- Course CRN's: Class (72373), Lab CS143-30 (72374),
Lab CS143-31 (72375).
- Prerequisites:
CS 133 or equivalent
(See undergraduate
curriculum).
- Course description:
In this course, students will learn how to write object-oriented code
using Java. Concepts will focus on object-oriented thinking,
software composition, inheritance and polymorphism, and design
patterns. Programming techniques, assignments and lab exercises
will focus on Java, specifically, the language and its core libraries.
The course will be conducted lab-style with a mix of lecture,
lab assignments and projects.
The course will also cover an elementary introduction to the C
programming language.
- Learning outcomes:
By the end of this course, students will be able to:
- Design Java classes for a challenging problem involving multiple classes.
- Demonstrate skill in problem solving by going from complex word
description to implementation.
- Understand objects: static and dynamic classes, interfaces,
abstract classes, inheritance, polymorphism, constructors,
Java's object features and syntax, memory representation of objects.
- Experience programming in C.
- Understand application development: front-end, back-end, threads, networking.
- Understand the relationship of language features to static and dynamic memory.
- Textbook:
Given the vast amount of on-line documentation (including lecture
material for this course),
FAQ's and tutorials, there is probably no need for either a C or Java textbook.
Also, given the sheer size of the Java language, no single book really does
justice. However, you will find the "Nutshell" book (see below) useful.
Additional books and references are suggested in the
Resources section below
-
This body of lecture material and examples.
-
The book Java in a Nutshell, 3rd Edition
by David Flanagan, O'Reilly Publishing.
This book is a handy reference that contains a (rather terse)
overview of the language, tools and API's. Initially, a beginner will
find it difficult to read, but it's probably the only
book you will continue to use even after becoming a Java expert.
- Book for the C programming language:
Simple C by J.McGregor, R.McGregor and A.Watt.
-
Suggested companion book: Core Java 2, Volume 1
by C.Horstmann and G.Cornell (Prentice-Hall, ISBN 0-13-081933-6).
This book, a introduction to Java for programmers, starts from
scratch, has plenty of examples and comparisons with other languages.
Use this book beyond the course material to get a different take
on the same material.
- See this link for an annotated list
of Java books.
- Some C books:
- C Pocket Reference by P.Prinz and U.Kirch-Prinz
(O'Reilly). A small, inexpensive ($12 !) and useful C reference.
Includes C99.
- C for Engineers by B.Bramer and S.Bramer (Arnold Pub.).
Intro-level text with lots of examples and detailed coverage of
elementary and intermediate level C. Does not include C99.
- The C Workbook by S.Menon (McGraw-Hill).
A lighter read than the Bramer book above and solid introductory book.
- The C Programming Language by D.A.Troy and J.D.Kiper
(Scott/Foresman). As comprehensive and detailed as the Bramer book.
- Practical C Programming by S.Oualline (O'Reilly),
Third Edition. Between the Bramer and Menon books in terms of
language coverage, but also covers debugging and program
development, a good option for students.
- C for Professional Programmers (2nd Ed) by K.Tizzard
(Ellis-Horwood). A faster paced and therefore thinner book for
programmers with some nice examples.
- C: A Reference Manual (5th Edition) by S.P.Harbison and G.L.Steele
(Prentice-Hall). More a reference than a textbook, with complete
coverage of the language including C99.
- Java references:
- C references:
- Programming load:
The course will be moderately programming-intensive, comparable with
CS133. If you are taking TWO OTHER programming-intensive
courses, you could be in for a rough semester. Stop by and discuss
the issue with me.
- Coursework:
- In-class quizzes: 2-3 unannounced quizzes.
- Small programming exercises : 4-5 exercises.
- Programming assignments: 4 assignments.
- Exams: 2 in-class exams.
- Approximate grading:
- 10 points: quizzes, about 3-5 points each.
- 20 points: small programming exercises, about 5 points each.
- 50 points: 4 programming assignments, 10-15 points each.
- 20 points: two exams, about 10 points each.
- Total: 100 points.
- Assignment submission and late work policy:
- All assignments will be submitted via your Unix accounts.
Create a (Unix) subdirectory called submit/ and make
it accessible. All your submissions (source code) should be placed here
in encrypted form
as described in the submission instructions.
- Select a single 8-letter encryption key to be
used for the entire semester. Mail this key to the TA
and do not reveal it to anyone else.
- No late submissions will be accepted for the small programming exercises.
- The larger programming assignments may be submitted
late, but points will be taken off: 20 percent for each 24-hour period
after the due-date. These points will not be pro-rated hourly. Thus,
if an assignment is due 5pm Oct 19th, a submission at 5.05pm Oct 19th loses
20 percent.
- The submission time will be determined by
the file-date of your crypt file.
Hardcopy late submissions must be initialled with
the submission time by one of the secretarial staff if I am not available.
- If you have been ill and have a doctor's certificate to prove it,
you will be eligible to take a missed quiz, provided you submit
this certificate (during my office hours)
reasonably soon after recovering from the affliction.
- Email policy:
You can send email to my GW email address.
I will answer most class email during specific times set aside during
the week for this purpose - so do not expect an instantaneous response.
Since this is an advanced class, you may not perform "debugging by email".
That is, do not send me code snippets and ask me to identify the problem.
If you want me to look at your code, you have to stop by in person
during office hours and bring along hardcopy. Email is typically used
for clarification regarding coursework. If there is a TA assigned to
the course, you ought to try to email the TA assignment-related questions before
emailing me.
- Academic Integrity policy:
- In this course, you will be expected to work on all assigned
coursework by yourself, unless otherwise specified by instructions on
this page. If you have any questions whatsoever regarding these
policies, see me during office hours.
- Do not exchange course-related code with anyone (including
anyone not registered in the course), or download code for use
in your assignments or exercises without permission.
Likewise, you may not look
at anyone else's code or show your code to anyone else. Protect
your work: for example, be careful not to leave your printouts around.
- If using a tutor, you may not show your CS143 homework-related code to
your tutor nor use code shown or written by your tutor.
All tutors for CS143 need to first register with me, by meeting
me during office hours.
- If you use material in your assignments that are from
outside the course material, then you should be prepared
to explain that material. The instructor and TA's reserve
the right to question you on your use of extraneous material.
Failure to answer such questions might be viewed as
grounds for an integrity violation.
- The
Academic Integrity Code will apply to this course. Please read
through the code carefully.
- Penalties for violating the code or the policies described here
include failing this course, and are elaborated in the Academic Integrity Code.
- If you have a disability that may
effect your participation in this course and wish to discuss academic acommodations,
please contact me as soon as possible.
- Coding standards:
Having completed CS-133, you are expected to submit well-written code:
- Comments must be substantive.
- Select readable variable names and method names.
- Use consistent indentation (preferred: two or four spaces).
- Useful tips for working at home:
- Download and install Cygwin,
which provides a Unix-like command-line for Windows machines.
Cygwin comes with associated Unix command-line tools,
including the gcc compiler, provided you tell the
installation procedure to download those tools.
- Mac users can install xcode, which comes with gcc.
- If you've been learning programming in an IDE (such as
BlueJ or Eclipse) it's probably a good idea to learn how to work at the
command-line and to use editors like Emacs. Later, you can
use a combination of both, as appropriate.
- When logged into hobbes (via SSH), use pico
as your editor, if you haven't used a Unix editor before.
|