Project report (external documentation) guidelines can be found here.
Lab assignments for each lab period are due via electronic submission on or before the next lab period.
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.
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 prior to the beginning of the next lab period in which the assignment was given. 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, 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.
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 WebCT
account will be set up automatically if you are properly registered for
this class. Your WebCT account will be identical to the name of your
GMU account. If you have not used WebCT before, your initial password
will be the last 4 digits of your GMU ID.
CS211 has been designated a writing-intensive course. This means that during the semester you will be asked to write a total of 3500 words, which will be graded, marked, and returned to you if necessary for revision. These writing assignments (and revisions, where appropriate) will be graded and will be a factor in the course grade as explained below.
Writing assignments that involve formal documentation of the four major
programming projects will
count towards the 3500 word writing requirement, and will account for
a portion of the grade on
those projects. Additional writing assignments may vary from
instructor to instructor, and may be
included in your instructor's evaluation grade.
Students *must* complete *all* writing assignments satisfactorily in
order to earn a grade of "C" or better in the class.
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.
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 C++ 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 projects must run under Cygwin or on a compiler available on osf1, unless otherwise specified by your instructor.
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.
A hardcopy of each project (including documentation) will be handed in at the beginning of the first lecture following the due date.
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
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.
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
Searching
14 Sorting
Optional topics: Binary trees
CAVEAT: This schedule is subject to change to best serve the needs
of the class.
Name : Ge Wang
Email : gwang5@gmu.edu
Office hours: Wed 3:00-5:00pm, Sat 10:00am-Noon, in ST 2, Rm 365
Labs : 204,205,206
Name : Peter Mburu
Email : pmburu@gmu.edu
Office hours: Thur 2:30-6:30pm, in ST 2, Rm 365
Labs : 201,202,203
Name : Aohan Zhao
Email : azhao@gmu.edu
Office hours: Tues 2:30-6:30pm, in ST 2, Rm 268
Labs : 210,211,212
UNDERGRADUATE PEER ASSISTANT
Name : TBA
Email : @gmu.edu
Tutoring hours: TBA in ST2, Rm 268