This course focuses on extending the use of the data structures concepts that you
learned in CSCI 102, by giving you ample opportunity to build more complex software
systems requiring lots of data structures and more sophisticated user interfaces.
For this purpose we use the Java programming language. Java Swing provides many
classes for the construction of complex graphical user interfaces. You will become
very good with Swing by the end of the course. In addition, you will be introduced
to some fundamental concepts in the design of user interfaces.
Syllabus / Topics Covered
This course is split into two major portions. In the first
portion of the class, we'll be learning topics such as
object-oriented programming, the Java programming language,
graphics, and graphical user interfaces. Also, you will be
introduced to some fundamental concepts in the design of
You will learn the following mechanisms in Java:
During the last part of the semesters, some lectures will
be given by invited speakers to introduce the exciting field
of Comptuer Science to you! We are hoping that this would help
you in selecting your electives in your junior and senior years
and starting to think about Computer Science as a career choice.
- Java I/O
- Inheritance, polymorphism and Java Generics
- Java Collections Framework
- Event-driven programming and graphical user interfaces
- GUI components, Layouts, Java Swing
- Java multi-threading using condition variables
A link to the
USC Spring 2012 academic calendar
is provided here for your convenience.
Academic Integrity Policy
Please make sure you read the Academic
Integrity Policy of this course.
Most class related announcements will be done through e-mail via
a Google Group setup by the instructor.
The instructor will send you an invitation from the Google Group to
join the group during the first 3 weeks of classes. The invitation
will be sent to your USC e-mail address. Please make sure that you
either (1) accept the invitation or (2) request membership from your
Google account by providing the required information.
It is also your responsibility to make sure that your mailbox
is not full. If you miss some important announcements
because your e-mail service provider is dropping your
messages on the floor, it cannot be used as an excuse.
Lab Assignment Grading
Unless otherwise specified, each weekly lab will require a design
writeup to be written and turned in at the start of the lab
for that week. These are worth 3 points.
You cannot get the 3 points unless you turn in your writeup
at the beginning of lab.
You can find a template for your design documents
You must go to the lab section for which you are registered.
Occasionally, if you have legitimate reasons why you cannot make it to your lab
but would like to attend a different lab, you need to make a request to
your lab TA and get it approved.
During your lab, the TA will be asking you questions about your code for any work
you do on your own. Be prepared to discuss your design and implementation when
you come to the lab. You need to demonstrate your lab work to your lab TA during
your lab session.
[BC: updated 2/4/2012 to be consistent with the
first 4 pages of Lecture 5]
You must finish your current lab and get it graded
during your lab time. Late lab will get a zero.
When you are ready for grading, append your name to the
list on the board and wait your turn.
In case your lab cannot be graded during your current lab.
You may get your lab graded during your lab TA's office
hour or by appointment
(you cannot just show up at the TA's office hour to get
your lab graded) and grading must be completed before the
beginning of your next lab. But please note that you
can only do this if you have pre-approval from your TA.
Your TA will only give you pre-approval if both of the
following conditions are satisfied:
You can do this at most two times, afterwards, you
must get your lab graded during your lab time or will receive
a zero for your lab.
- You were working on the lab the whole time during
your lab session, and
- The TA is convinced that you have completed a
reasonable amount of your lab work.
If you have legitimate reasons why you cannot make it to your lab but
would like to attend a different lab, you need to make a request to
your lab TA and get it approved. If there is room and you have not
done this for more than two times, your TA will
approve it and inform the other lab TA.
You can do this at most two times (your lab TA
will keep track). Afterwards, your request will be denied.
Homework Assignments Grading
All of the homework assignments will require students to
prepare a design document.
You can find a template for your design documents
[BC: paragraph added 1/22/2012]
As mentioned in Slide 3 of Lecture 2
on 1/11/2012, to encourage you to do your HWs early, you will get
extra credit if you turn in your programming assignment 2 or 3
days before the deadline. If your submission (the one we end up grading)
is more than 72 hours before the submission deadline,
you will get an extra 10% or your score.
If your submission is between 48 and 72 hours before the submission deadline,
you will get an extra 5% of your score.
All homework assignments will be graded on the aludra/nunki.usc.edu
UNIX systems from the grading account (which you do not have access to).
Way before you submit your code, MAKE SURE that your code compiles
and runs properly on aludra/nunki because that's where it will
be tested and graded.
Also, aludra/nunki may have a SLOW Internet connection.
Your program must function reasonably under such a condition.
An excuse such as "It runs just fine on my computer!" will not
be accepted. If we have to grade your homework assignment on any machine
other than aludra/nunki (e.g., your laptop, a lab machine, etc.),
we will deduct 35% from your grade.
You must follow the
Electronic Submission Guidelines
when you submit your homework assignments.
You should also verify what you have submitted is what
you intended to submit by following the
Verify Your Submission procedure.
Please note that it is your responsibility to ensure that
you have submitted valid submissions.
Good Design and Style Are Expected
Since you all have the CS 102 background,
the assumption in our class is that you
know about Object-Oriented programming. Therefore, you should continue to use
your knowledge of Object-Oriented programming in this class (AND your
future classes). You should also understand that it is EXPECTED that you
continue to use what you have learned in early classes and apply them to your
later classes at USC! That's just how it works!
[BC: updated 2/17/2012]
If you want extra credit, your program must work very very well in all aspects
and you must have a very very good and very very clean design. What's
"very very well/good/clean"? Don't know! It's not science. It's art.
It's what you are suppose to strive for!
Unit Test Every Class You Developed Is Expected
[BC: added 1/23/2012]
In this class, we expect that for every class you
have developed, you do Unit Testing!
[BC: added 2/17/2012]
Starting with HW2, you may lose up to 1 point if you show no evidence of
unit-testing your code.
- You need to demonstrate that you have done some reasonably amount of testing.
- Do not turn in "un-tested" code!
Extra Credit Policy
[BC: updated 2/17/2012]
This is the new extra credit policy for HW2 and beyond.
It will be the grader's call whether you get any extra points or not.
- If you show that you have done a thorough job doing unit testing,
you can get up to 1 extra credit point.
- If you have a good Object-Oriented design and give good arguments
about your design choices, you can get up to 2 extra credit points.
- If your implementation has a clean user interface, clean code,
interesting and fun to run/play, and have good performance,
you can get up to 2 extra credit points.
All homework assignments must be turned in on time.
Late submissions will receive severe penalties. Due to clock skews,
electronic submissions of homework assignments will
be accepted within 15 minutes after the specified deadlines without
If you submit within 24 hours after the grace period,
you will receive 85% of your grade.
If you submit within 48 hours after the grace period,
you will receive 70% of your grade.
If you submit within 72 hours after the grace period,
you will receive 55% of your grade.
Although right after midnight, you will lose 1% every 5 minutes.
When the penalty reaches the day limit, it flattens out.
For example, if your submission has a timestamp that is 32 minutes after
the grace period, 7% will be deducted from your homework assignment after
grading; if your submission has a timestamp that is 3 days, 4 hours,
and 35 minutes after the grace period, you will receive a score of zero
(and your homework assignment will not be graded).
The figure below summarize the deductions.
If you are unable to complete a homework assignment due to documented illness
or documented family emergency, please notify the instructor as soon as
possible to get an extension. A doctor's note
is required as proof of illness or emergency.
In general, when you get sick,
it's best to see a doctor and get a note just in case you may need it later.
You are allowed to submit small number of modifications via
e-mail to the grader and copy your e-mail to the TA.
The first 4 lines of modifications are free of charge.
Additional modifications cost 20% per line of modification.
One line (128 characters max) of change is defined as
one of the following:
where x is a line number and y is a specified file.
- Add 1 line before (or after) line x of file y
- Delete line x of file y
- Replace line x of file y by 1 line
Please note that this applies to code and documentation files.
(It may not be worthwhile to modify a documentation file at
the cost of 20% per line of modification.)
Please also note that if you submitted a file you did not meant to
submit, or if you have submitted a broken submission file, or if
you have forgotten to include a file in your submission,
the only way to change your submission
is to use the process described right here.
Two midterm examinations will be given.
They will cover the lectures, readings, labs and homeworks.
The coverages of the two exams will not overlap.
The dates for these exams are posted near the top
of the class home page.
Any scheduling conflicts regarding the midterm exam date must
be resolved with the instructor at least two weeks
before the exam date.
The exams are usually closed book, closed notes, and closed everything (and no "cheat sheet").
Also, no calculators, cell phones, or any electronic gadgets are allowed.
There will be assigned seating.
Overall Class Grades
The grading breakdown is as follows:
Final grades for the course will follow this scale:
||% of Final Grade
|10-12 Lecture Reports
We use a fixed grading scale in this course so that we can encourage cooperation and friendly association amongst students.
|95% or higher
Pleaes note that
we will not assign incompletes unless it is
for a documented medical reason (in accordance with USC policy).
Note From A Doctor
Recently, there has been a change in the policy at the
Student Health Center regarding giving a "note from the doctor"
to you to bring to a faculty
member so that you can be execused from deadlines. Basically,
they will not give you such a note any more.
What they would give you is an Authorization for Disclosure
of Medical Information form. With this form, you give them
permissions to discuss your illness with me.
So, if you visit a doctor at the Student Health Center,
please make sure you fill out one of these forms, check the
"limited discussion with faculty" checkbox, get it stamped,
signed, and dated by someone there (a clerk/receptionist
would sign at the "witness" line), and bring it back to me.
This would satisfy the "note from a doctor" requirement so
that you can get an extension.
If you visit a doctor somewhere else, please either bring a
"note from the doctor" or a similar authrozation letter so
I may contact them.
A request to regrade homework assignments, labs, or exams must be submitted,
in writing (e-mail is acceptable),
within two weeks of the announcement of your grade.
(The actual regrade can take place outside of the two-week window,
but the request must be make within the two-week window.)
Requests must be specific and explain why you feel your answer deserves
A request to regrade an assignment can result in the entire assignment
being re-evaluated and as a result the score of any part of
the assignment be increased or lowered as appropriate.
We will strictly adhere to the two-week deadline. So,
please get your regrade request in as soon as possible.
in order to be eligible for regrades,
you must write your
entire exam in
The instructor's office hours are held several times a week for about
one hour each.
If you are not available during the designated time for office hours,
you are always welcome to make an appointment (and reserve a timeslot)
to see the instructor.
You are strongly encouraged to come see the instructor if you
feel that you are in trouble with anything related to the course.
Don't wait till the deadline gets close.
No extra credit assignments will be given for this class. So, there
is not need to ask. Try your best from the beginning!
Implicit Student Agreement
All work including homework assignments, labs,
and exams must be that of the individual student. It is often
productive to study with other students. However, if any portions of homeworks
or programming assignments are found to be shared between two (or more)
students, zero credit will be given to all students concerned and all students
will be disciplined. This policy is in the interest of those students who
do their own work, which hopefully applies to all of you in this class.
In this class, we will use sophisticated automated program checkers
to detect cheating. Be aware that the program checkers have
demonstrated very good results and are widely used within the
Any student caught cheating will be given zero credit and will be disciplined.
It is the students responsibility to submit their assignments in time.
Students are expected to be familiar with programming in
Java on the UNIX platform. No special assistance or
consideration will be offered if your background is inadequate.
The instructor must treat all students equally and cannot
give special treatment to any particular student.
Therefore, please do not ask special favors from the
instructor because of your circumstances.
This may seem unfair to you because you believe that your
circumstances are special (understandably, everone
does). But the rule the instructor must follow is that whatever
he offers you, he must offer to the entire class.
(The resources below are provided for your information.
Please note that the instructor has not read most of them.
Please use these resources at your own risk!)
- cygwin (BSD system with X11R6 on Windows XP)
- Some Often-used UNIX Commands
- UNIX Shell Programming
(Chapter 2 of this book gives a good introduction to UNIX)
UNIXhelp for Users from the University of Edinburgh
- Makefile tutorial (at Colby College)
(compiling, linking, additional libraries, include files) from USC ITSWeb
- UNIX Documentation
(concepts, commands, X-Windows) from USC ITSWeb
Emacs Documentation from USC ITSWeb
Vi Text EditorDocumentation from USC ITSWeb
- General information on operating systems, productivity applications,
Internet connectivity, e-mail and web publishing at USC, can be found
at the ITS software site. You
can click on your operating system and download useful software from there.
For example, for the Windows platform, you can find things like
X-Win32, FileZilla, and PuTTY there.