Reading: Students are responsible for reading and understanding the material in the textbook. However, we will not necessarily cover all of it in class. If you do not understand something in the book, there will be opportunity to ask questions in class, during your instructor's office hours, or those of the course TAs.
Labs: Lab configurations vary depending on the actual room--your TA will help you learn to use the machines in your particular lab.
Lab attendance is *required.* Failure to attend
lab will result in significant loss of both instruction and hands-on experience.
In addition, quizzes or in-lab assignments may not be made up. During lab time, your lab instructor will provide examples
and assistance with concepts covered in the book and during lecture, and
occasionally will introduce new material as well. Accordingly, you
should fully prepare yourself for lab by attending lectures and completing
any assigned reading, as well as carefully
reviewing and, in appropriate cases, getting started on the lab assignments
provided in advance. Lab will also provide the opportunity
to work on the GMU computer systems in a controlled environment and
to ask more detailed questions than may be possible during your lecture.
Please note that you must attend the lab session you are registered
for. You may be able to attend
another lab session if it is tied to your lecture session and if your instructor
agrees; however, individual
instructors may vary both lab materials and lab assignments.
Accordingly, attendance at any lab
session not specifically connected with your lecture section cannot
be counted on to cover the same
material as those associated with your lecture section. In addition,
quizzes taken in another lab section
will not count towards your grade unless special arrangements were
made in advance and accepted by
both your instructor and TA. Accordingly, you should plan to
attend the lab session you are registered for.
Due Dates: Labs and programming projects
will be due the assigned date and time. Work will
be submitted electronically.
Late work: Late labs will not be accepted. Late projects will be penalized 10 percent per day, but will not be accepted more than 3 days late. (if you received a 90 on the project but it was 3 days late, your score would be .70 * 90 = 63). After that they will not be graded. Note that if you have submitted a project and decide you want to submit a late project, you MUST notify the TA prior to the due date. Once your project has been graded, it may not be resubmitted. No extra credit points, when available, will be
given to late projects. Individual requests for extensions will not be granted. However, you will receive partial
credit for any portions of your program that you can demonstrate work correctly.
Missing an Exam or Contesting a grade Once labs or projects grades are sent to you or posted, you have one week to contest the grade. After that the grade will not be changed. You must have a written excuse (doctor's note, for example) to miss an exam. Once a test or quiz is returned, you have
one week to contest the grade-- beyond that the grade will not be changed. Note that the week starts when a test is returned to the class, which may or may not be when
you choose to pick yours up. The Dean's permission is required for taking a missed Final Exam.
Incomplete A request for an incomplete (IN) will only be considered in the final quarter of the course (all assignments up to and including the 3rd project must have been
turned in and no additional work on these will be accepted). Request must be made in writing, accompanied by a note from a doctor or employer and applicable contact
information.
We will use WebCt and Unix e-mail for official communication. You are responsible for checking the system regularly for notices from your instructor or TA.
You MUST obtain a mason
account if you do not have one.
(The TA's will help you obtain an account and set up your WebCt account during a beginning lab session.)
Please use this account for any individual correspondence with your instructor
and/or TA. (GMU faculty members have been instructed not to respond
to student email originating from a non-GMU account.)
Your course grade will be a weighted average of the following items:
Each section instructor will decide the basis for his/her lab grades and instructor's evaluation, which might include additional programming, pop quizzes, hour tests, class participation and/or other things as determined by your instructor.
Extra credit programming points do no carry over to test grade points or vice-versa. Any student earning a "D" or "F" on the final exam may receive a "D"or "F" in the class, at the discretion of the instructor.
Programming projects may be weighted differently. These are to be individual efforts, meaning that no code sharing or discussion of problem solutions with anyone except your instructor or a course UPA or TA. You may not incorporate code written by others, such as can be found on the Internet or any of the numerous CS books. Documentation is required.
You *may*, however, ask questions or respond to queries on WebCT regarding projects or other assignments, so long as you do not post any code or pseudocode, and so long as you do not provide specific solutions to the overall problem or algorithm design (even in English). "Summarizing" WebCT statements or responses to another student verbally regarding an assignment are *not* acceptable, and are subject to the above ban on discussing assignment solutions. Such discussion or code sharing constitutes an honor code violation. Suspected honor code violations will be reported to the Honor Committee. (For further information regarding honor code violations in programming, see the Computer Science department's Honor Code statement.)
During a lab session, with the TAs permission, you are allowed to help a fellow student debug a program or answer very specific questions. Allowing another student to copy your work or to copy that of another student, is however, an Honor Code violation.
You will be given credit only for code that works. This means that you should code and test functions as you write them, not code the whole thing and then try to get it to work. Students may develop programs using any computer system they have available. Java programs should run under Java 1.5.
You are expected to backup and submit/resubmit your program as you get different pieces working. The submit program keeps the last version you submit. Failure to do this may result in your getting a zero on a program instead of partial credit if last minute problems occur. Note that accidently deleting your program, having problems connecting, etc., will not be accepted as excuses. It is important that you not touch your programs once you have done your final submission: If there are submission problems, consideration for credit will only be given if source files contain your name and it can be verified that the programs were not changed after being submitted.
- Required text
- Object-Oriented Data Structures Using Java , by Dale, Joyce and Weems
- Recommended texts
- Java Software Structures (2nd edition) by Lewis and Chase (data structures book that uses Java 1.5, but coverage is not as complete as required text)
- Java How to Program (6th edition), by Deitel and Deitel (good Java book)
- Bulletproof Unix, T. Gottleber (if unfamiliar with Unix/Linux
If you program at home, you will need to download Java 1.5.0. The JGrasp developmental environment is available free here
If you are a student with a disability and you need academic accommodations, please see your instructor and contact the Disability Resource Center (DRC) at 993-2474. All academic accommodations must be arranged through the DRC.
A tentative list of the topics to be covered each week in class is given below. Students are expected to read the appropiate material from their textbook in advance of the class in which it will be covered.
Week Topic (Note: this is a tentative schedule)
1 Syllabus
Program specification, design & analysis
OO principles and Java classes
Step-wise refinement and testing
Pre and post conditions
Java -- scanner class, files, command line arguments, Strings
2 Inheritance, Abstract Classes, Interfaces
UML
Composition-- aggregate objects
Primitive types vs reference types
Arrays --of primitive types, of objects
Deep vs shallow copy of an object
MultiDimensional Arrays
3 ADT unsorted list
Array implementation
Dynamic array expansion
Java -- ArrayList of Java Collections API, templates, 1.5 for-loop
4 Sorted List
Midterm 1
5 Algorithm Efficiency
Generic List
6,7,8 Linked list basics
Linked list as ADT
Ordered Linked List
Doubly Linked list
Circular Linked Lists
LinkedList of Java Collections API
9,10,11 Queues, Queue applications (simulations)
Queue of Java Collections API
Stacks, Stack applications (postfix)
Stack of Java Collections API
12 Recursion
13 Hashing
14 Searching
Sorting
Optional topics: Binary trees, Features of Java langage
CAVEAT: This schedule is subject to change to best serve the needs
of the class.
The Final Exam Schedule is posted here
Midterm dates are set by the individual instructors. Tentative dates are given below.