CS 141: Software Engineering I
Note: as of Fall 2003, CS 141 will no longer be offered.
Because this page serves as a reference for many 141 students,
I will leave the page as is.
However, you may want to use the new CS
143 homepage instead.
Navigation shortcuts:
(Modules:
1,
2,
3,
4,
5,
6,
7,
8,
9,
9B,
10,
11,
12,
13,
14,
A
)
(Exercises:
1,
2,
3,
4
)
(Assignments:
1,
2,
3,
4
)
( Important dates: )
( IAQ)
(
API)
Announcements:
- There is a subdirectory of cs141 called
useful in which I will occasionally place
classes like New_io.java and UniformRandom.java
that I think will be useful to the class. These classes
will themselves be periodically modified - I will try to
remember to post a notice here when I've made such a
modification.
- For those of you not quite familiar with Unix,
here is an elementary
tutorial in PDF.
The tutorial covers basic Unix, the
Emacs editor and Latex. However, note that
it was written for
the tcsh shell and not GWU's ksh.
For more information on the local Unix flavor,
see the
SEAS computing website
Spring 2003 information:
- Instructor: Prof.
Rahul Simha.

- Office Hours:
Tue/Thu 1:30-3:30
or by appointment (Send email to set up an appointment).
- Office: Room
717, Phillips Hall (CS Dept.)
- Class Time/Place:
-
CS 141-10: Wednesdays, 12:30 - 3:15 pm (CRN 83732)
CS 141-11: Wednesdays, 6:10 - 8:45 pm (CRN 83903)
All classes in Tompkins 405
-
TA office hours in Tompkins 405, Tuesdays 12-2 and Fridays 10-12.
- TA's:
The class TA's this semester are:
Rizwan Sattar,
(rizwan@gwu.edu),
Arezo Sanie
(wishes@gwu.edu)
and Sean Hanlon
(seanh@seas.gwu.edu).
They will occasionally post material
to a TA page that you will find useful,
including the grading criteria for each assignment.
- Lab:
The labs are:
- 141-30: Mondays, 9.30 - 10.45 in Tompkins 405 (CRN 83927).
- 141-31: Mondays, 12.00 - 1.15 in Tompkins 405 (CRN 83928).
The labs will serve two purposes: (1) they will help you
catch up with in-class exercises, and (2) the TA's will help
you (to some extent) with assignments and exercises.
Lab attendance is mandatory - attendance will be taken.
Note: There will be no labs on Jan 20 (holiday).
- Prerequisites:
- CS 131 (See
undergraduate
curriculum)
- No familiarity with object-oriented programming
is required. Some knowledge of C or C++ will be advantageous but not required.
- 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.
- 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 a Java textbook.
Also, given the sheer size of the 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 Pub., ISBN 1-56592-487-8).
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.
-
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.
Resources:
Coursework and Course Policies
NOTE: The contents of this page may change slightly
over the semester, and additions may be made to the page. In particular,
the point-weightage and due-dates are approximate at this time, and may
change.
- Coursework and Grading:
- Coursework:
- In-class quizzes: 2-3 unannounced quizzes.
- Small programming exercises :
4 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.
- Details:
- In-class quizzes will be given
at the end of some lectures,
mostly based on material covered in previous class.
- Small programming exercises:
- To help in understanding the material.
- Typically, no more than 30-40 lines of
code, sometimes less. Due after a week.
- Larger programming assignments
- Typically due after 2 weeks.
- Similar in length to assignments in many programming
courses.
- 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
(Here's how).
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 ALL the TA's
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.
- Course policies:
- Email policy:
You can send email to my GWU 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.
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 CS141 homework-related code to
your tutor nor use code shown or written by your tutor.
All tutors for CS141 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.
- Note: 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.
Course Syllabus:
The course will seek to cover as many of the following
modules as possible (modules do not correspond to lectures):
NOTE: If you haven't seen C/C++/Java-type syntax before, you
might want to do the exercises in the
Syntax Review Module
after reading through modules 1 and 2.
Getting started
export PATH=$PATH:/usr/java/bin
export CLASSPATH=/usr/java/lib:.
If you are using tcsh
:
- Add the following lines to your .cshrc
setenv PATH = ($PATH /usr/java/bin)
setenv CLASSPATH /usr/java/lib:.
Add the following URL's to your netscape bookmarks:
Test that it's all working:
% javac testjava.java
(Don't type the percentage prompt).
Execute:
% java testjava
- Getting help:
The best place to get help is in the labs, from the TA's.
To get help from me, it's best to stop by during my office hours
with a printout of your program (if applicable).
Sending me your code by email and expecting me to debug it
is NOT acceptable. (See email policy above).
Note: Java's debugger is not very friendly, so you have to
print out a lot of information when debugging.
For questions regarding the Java library, refer to the on-line documentation.
-
Important dates:
lectures, due dates etc (subject to change)
- Wed, Jan 15:
Module 1, Java Syntax Review Module
-
Exercise 1 due 9pm Tue Jan 21
- Wed, Jan 22:
Module 2, Module 3
-
Exercise 2 due 9pm Tue Jan 28
- Wed, Jan 29:
Module 3, Module 4
- Wed, Feb 5:
Module 5
-
Assignment 1 due 9pm Tue Feb 11
- Wed, Feb 12:
Module 5
- Wed, Feb 19:
Module 6
-
Assignment 2 due 9pm Tue Feb 25
- Wed, Feb 26:
Modules 6 and 7
-
Exercise 3 due 9pm Tue Mar 4
- Wed, Mar 5:
Modules 6 and 7
- Wed, Mar 12:
Modules 7 and 8
-
Exercise 4 due 5pm Fri Mar 14
- Wed, Mar 19:
No class - Spring Break
- Wed, Mar 26:
Module 9
Exam 1 (Material: modules 1-7)
- Wed, Apr 2:
Modules 9, 9B
-
Assignment 3 due Tue Apr 8
- Wed, Apr 9:
Modules 10, 11
- Wed, Apr 16:
Modules 11, 12
-
Assignment 4 due 9pm Tue Apr 22
- Wed, Apr 23:
Module 13
Exam 2 (Material: TBA)