Course Description - CSCI 200L, Fall 2011

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.
Course Prerequisites
CSCI 102.
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 user interfaces.

You will learn the following mechanisms in Java:

  • Java Collections Framework
  • Inheritance, polymorphism and generics
  • Event-driven programming and interfaces
  • GUI components and Layouts
  • Java I/O
Once students have used the first portion of the course to solidify their Java programming abilities, the second portion on the course will focus almost entirely on working with students in CSCI 201L to write a very large team project.

While you are busy doing the final project, 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.

Academic Calendar
A link to the USC Fall 2011 academic calendar is provided here for your convenience.
Course Organization
The elements of the course can be viewed in a pyramid structure:

Reading Assignments: Readings from the book and other sources form the base of the pyramid. These readings contain theoretical concepts, examples and usable code that will be very helpful for all the work in this course.

Lab Assignments: The lab assignments are designed to provide you with fundamental programming techniques that important to all of your software engineering endeavors. Labs will be assigned on a weekly basis and will focus on implementing various topics discussed in lecture. It will be difficult to succeed in this class without doing the weekly labs on time.

Homework Assignments: The homework assignments will utilize the techniques, and in some cases the code, from the labs. The labs are like miniature homework assignments and students will use what they learn in labs to complete the larger homework assignments. If students neglect to do the labs, they will find the homework assignments much more difficult.

Exams: The exams are the top of the pyramid. Students will be expected to know the material from the assigned readings in the book, the labs and the homeworks. The exams are a student's chance to demonstrate that they fully understand the course material.

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 here.

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.

Homeworks Grading
[BC: section renamed 11/7/2011]
All of the homework assignments will require students to prepare a design document. You can find a template for your design documents here.

IMPORTANT: All assignments will be graded on the aludra/nunki UNIX systems from the grading account. 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. An excuse such as "It runs just fine on my computer!" will not be accepted. If we have to grade your 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 programming 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.

Extra Credit Policy

[BC: paragraph added 9/19/2011]
For each homework assignment, you may earn up to 10% of the total points as the extra points, only if you provide functionalities or user experience beyond what is required. Note that, it will be the TA's call whether you get any extra points or not.

Good Design Is Expected

[BC: paragraph added 9/19/2011]
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!

Late Policy

All homeworks 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 penalties. 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 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 assignment will not be graded). The figure below summarize the deductions.

If you are unable to complete a homework assignment due to illness or family emergency, please see 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.

Modifications after Deadline

You are allowed to submit modifications via e-mail to the instructor, within 24 hours of the submission deadline.

One line (128 characters max) of change is defined as one of the following:

  • 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
where x is a line number and y is a specified file. The first 4 lines of modifications are free of charge. Additional modifications cost 20% per line of modification.

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, 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:
Assignment % of Final Grade
3 Homeworks 25%
5 Labs 20%
Class Project 20%
10 Lecture Reports 5%
2 Exams 30%
Final grades for the course will follow this scale:
Percentage Letter Grade
95% or higher A
90-95% A-
87-90% B+
83-87% B
80-83% B-
77-80% C+
73-77% C
70-73% C-
67-70% D+
63-67% D
60-63% D-
below 60% F
We use a fixed grading scale in this course so that we can encourage cooperation and friendly association amongst students.

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.

Regrading Policy
A request to regrade homework or exams must be submitted, in writing, 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 additional credit. 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.

For exams, in order to be eligible for regrades, you must write your entire exam in ink.

Office Hours
The instructor's office hours are held several times a week for 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.

Extra Credits
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 homeworks, programming assignments 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 academic community. 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.
Auditing is not permitted for this class.
Additional Resources
(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!)



[Last updated Sat Sep 19 2020]    [Please see copyright regarding copying.]