CS 211, Computer Science II
George Mason University
DEPARTMENT OF COMPUTER SCIENCE
Course Description -- Spring 2005



Section 1 (Java):            Lecture: Mon/Wed 1:30-2:45 pm, IN 103 (Maney)
Section 2 (C++):            Lecture: Wed 4:30-7:10 pm, IN 204 (Maddox)
Section 3 (Java):            Lecture: Mon/Wed 3:00-4:15 pm, IN 206 (Maney)
Section 4 (Java):            Lecture: Tues 7:00-10:00 pm, ST2 7 (Maney)


Address for Class WebCt Bulletin Board:    WebCt Programming and Lab Projects will be posted on WebCt.


LABORATORY WORK: 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.

Lab assignments for each lab period are due via electronic submission within 24 hours from the beginning of your scheduled lab time.

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





DESCRIPTION

A second course in computer science.
Goals: Study some of computing's core areas, namely, data structures and algorithms. Apply the principles learned in class to several programming projects.
Who should take this course: CS 211 is intended for Computer Science majors and students majoring in other mathematical, scientific, and engineering subjects.

PRE-REQUISITE: C or better in CS 112

Back to the top



COURSEWORK

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 teachers' office hours, or those of the course TAs.

Due Dates: Labs are due 24 hours after the beginning of the lab period in which they are presented. Programming projects will be due the assigned date and time. Work will be submitted electronically using the submit program on mason.gmu.edu.

Late work: Late labs will not be accepted. Late projects will be penalized 10 points a day. 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.

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.

Back to the top




COMMUNICATIONS

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 WebCT account will be set up automatically if you are properly registered for this class.  Your WebCT ID will be identical to your Mason e-mail username.  If you registered at GMU on or after August 16, 2004, your initial password will be based on your birth month and birth day. For example, a birthday of February 16 would yield a password of 0216. If you registered prior to this time, you initial password is the last four digits of your SSN. .

Back to the top




GRADING POLICY

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 will receive a "D"or "F" in the class, at the discretion of the instructor.

Back to the top




PROGRAMMING POLICIES

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. Please note, however, that submitted C++ projects must run under Cygwin or on a compiler available on osf1, unless otherwise specified by your instructor. Java programs should run under Java 1.4.

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 it can be verified that the programs were not changed after being submitted.


Back to the top




TEXTBOOK

C++ Section:

Java Sections:

Back to the top




SOFTWARE

C++ Section:

If you plan to program at home, it is recommended that you download the cygwin environment from RedHat. The URL is sources.redhat.com.cygwin. Follow the install link. Note that you have to specifically select g++, make, and the gdb (debugger). See here for directions. You can also obtain emacs (editor) from the same source. If you are running linux on your computer, you can down-load the current release of GNU GCC from http://gcc.gnu.org/. JEdit, a free, easy to use editor present in the labs can be found here
Java Sections:
If you program at home, you will need to download Java 1.4.2. (At the time the software in the labs was loaded, version 5 was too buggy for us to feel comfortable using). The JGrasp developmental environment is available free here


Back to the top




SPECIAL ACCOMMONDATIONS 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.


Back to the top




SYLLABUS & SCHEDULE

For each week, one or more chapters of the textbook as indicated below will be read in advance of class. Students are expected to read the corresponding chapters below in advance of the class in which they will be covered.



C++ Section: 
Week Topic (Note: this is a tentative schedule) 1 Syllabus Program specification, design & analysis OO principles Abstract data types and C++ classes 2 Operator overloading UML Big-O 3 Templates Inheritance 4 Pointers Midterm 1 5 Pointers and arrays Dynamic memory allocation 6 Dynamic arrays Destructor, Overloading assignment operator, copy constructor 7 Linked list basics 8 Linked list as ADT Ordered Linked List 9 Doubly Linked list Circular Linked Lists STL list 10 Stacks STL stack 11 Queues STL queue 12 Hashing 13 Recursion 14 Searching Sorting
Java Sections:
Week Topic (Note: this is a tentative schedule) 1 Syllabus Program specification, design & analysis OO principles Review of loops and if statements Review of IO and Strings 2 Java classes Primitive types vs reference types meaning of = and == static and final modifiers constructor, copy constructor, and this ADT 3 Inheritance Abstract Classes Polymorphism Composition Nested classes/ anonymous classes Interfaces UML 4 Exception handling the finally clause Midterm 1 5 Algorithm Efficiency Dynamic Array Expansion Multidimensional Arrays 6 Interfaces Java Arrays class UML Array implementation of a List ArrayList of Java Collections API 7 Linked list basics 8 Linked list as ADT Ordered Linked List 9 Doubly Linked list Circular Linked Lists LinkedList of Java Collections API 10 Stacks Stack of Java Collections API 11 Queues Queue of Java Collections API 12 Hashing 13 Recursion 14 Searching Sorting
Optional topics: Binary trees, Java clone, serializable, design patterns
CAVEAT:  This schedule is subject to change to best serve the needs of the class.
Back to the top


EXAM DATES

Back to the top