George Mason
University
DEPARTMENT OF COMPUTER SCIENCE
Course Description: Fall 2016
Office/Hours: Eng. 4446; R
4:30-6:30pm; Prof. Jim X. Chen
REQUIRED TEXTBOOK: Hanly and Koffman,
"Problem Solving and Program Design in C," 7th ed., 2013.
DESCRIPTION: CS 222 is a second course in computer programming, emphasizing programming concepts relevant to engineers. Topics include lower level language aspects and elementary data structures. Students are expected to have a basic understanding of the elements of programming in some high-level language. CS 222 will be taught using C, but students are not presumed to be familiar with C prior to this class. This course is intended as a terminal course in programming for engineers.
Prerequisite: C or better in CS 112.
Course outcomes:
1. Be able to implement, test, and debug a designed solution
to a problem in a low-level programming language, specifically the C
programming language.
2. Demonstrate a good understanding of C language constructs
such as pointers, dynamic memory management, and address arithmetic.
3. Demonstrate a good understanding of C libraries for input
and output, and the interface between C programs and the UNIX operating system.
4. Demonstrate an ability to use UNIX tools for program
development.
COURSE POLICIES
Class: Students are expected to attend all lectures each week and are responsible for all material covered during lecture.
Electronic Devices: Use of electronic devices (including laptops, tablets, cell phones, etc.) is not permitted during class. Please make sure all such devices are turned off or silenced while class is in session.
Programming Assignments: Programming assignments will be posted on Blackboard as they are assigned, and must be submitted on Blackboard by the assigned due date. If your program is incomplete, you may still submit it for partial credit. However, your code must run without obvious errors (even if not all functionality is present). Building your programs in a modular fashion and debugging as you go are crucial concepts in program development. Additionally, your TA relies on running your program as part of your grade determination. Accordingly, any programming assignment that is submitted but either does not compile or has major errors when it is run will receive no more than 50% credit.
Students are expected to work independently outside of class to familiarize themselves with the GMU computer systems, to read and review all assigned materials and to complete all homework and programming projects.
Reading: Students are responsible for reading and understanding all assigned material. Be aware that some material covered in class may not be found in your textbook. If you do not understand any of the covered materal or reading assignments, there will be opportunities to ask questions in class, on Blackboard or during UTA/GTA/instructor office hours.
Due Dates: Due dates for all programming projects will be posted on Blackboard. Programming assignments are posted in advance, and are due in the manner stated in the specs (usually electronic submission through Blackboard) no later than the date specified. Homework assignments are due in the manner stated (either through Blackboard or in class.)
Late work: No late submissions are permitted. If your program isn't the way you'd like it to be when the deadline is near, submit it anyway for partial credit. The system permits you to resubmit your assignment until the due date for THREE times, so you may resubmit if you improve your program prior to the deadline.
GRADING
POLICY
Your course grade will be a weighted average of the following items:
Class participation may include in-class exercises, pop quizzes, and/or short programming.
Your overall course score, S, will be the sum of these points.
CLASS
COMMUNICATIONS
CS 222 will be using the Blackboard system for most class communications. You are responsible for any notifications or information posted on Blackboard either by your instructor, your GTA or the class UTA(s), and you will need to check Blackboard regularly for such notices. Some information may be disseminated through Blackboard rather than in class. Individual communications with the professor/GTA/UTA may be done by email using your GMU email account. When you email, please be sure to include your name, the class number and the topic in the subject header. (E.g.: Subject: Jim Jones / CS 222 / Project 2)
PROGRAMMING POLICIES
(1) No sharing or discussion of code for assignments. Unless specifically stated otherwise, all assignments are individual projects, not group projects. Students are expected to do their own work, not to share programs with each other, nor copy programs from anyone else. However, you may offer limited assistance to your fellow students regarding questions or misunderstandings on their programming assignments by responding to queries on Blackboard or Piazza (see guidelines below). Any discussion or sharing of code outside these guidelines constitutes an honor code violation. Suspected honor code violations are taken very seriously, and will be reported to the Honor Committee. (See CS Department Integrity Statement and Honor Code)
(2) No incorporation of code from any source external to the course. You may not incorporate code written by others. Of course, you may freely use any code provided as part of the project specifications, and you need not credit the source. Working something out together with an instructor or TA usually will not require crediting the source.
(3) Back up your program regularly. You are expected to backup your program in separate files as you get different pieces working. Failure to do this may result in your getting a much lower grade on a program if last minute problems occur. (Accidently deleting your program, having problems connecting, etc., will not be accepted as excuses.)
(4) Keep an untouched copy of your final code submission. It is important that you not touch your programs once you have made your final submission. If there are any submission problems, consideration for credit will only be given if it can be verified that the programs were not changed after being submitted.
(5) Code must run on Mason gcc. Students may develop programs using any computer system they have available. Please note, however, that submitted projects must run under a C compiler available on Mason. Your documentation should clearly state which software was used for compilation, and once makefiles are introduced, a makefile should be included with each assignment submission. No extensions will be given due to compiler incompatibilities.
TENTATIVE
CLASS SCHEDULE
The following represents the basic schedule of topics that will be covered during the lectures in the weeks indicated below. Reading assignments from the text or from slides/handouts and homework/programming assignments will be provided in class or on Blackboard.
Week Topic Reading Assignment
1 Introduction / Syllabus / Simple Unix Ch. 0-1 & online material for UNIX
Overview / C language elements / System Help Guides
2 Structure of a C program, operators, basic i/o Ch. 2-3 & online material for "vi" editor
"vi" editor, compilation platforms
3 Top-down design with functions, selection structures Ch. 3-4
4 Repetition and Loops, pointers and modular programming Ch. 5-6
5 Arrays Ch. 7
Review and Midterm Exam1
6 Strings Ch. 8
7 Recursion Ch. 9
8 Structure and Union Types Ch. 10
9 Makefiles, compilation of multiple files PPT notes
10 Text and Binary File Processing Ch. 11
Review and Midterm Exam2
11 Programming in the Large Ch. 12
12 Dynamic Data Structures Ch. 13
13 (Optional) Bitwise operators, Processes and Threads PPT notes
14 Review
15 FINAL EXAM (Covering ALL MATERIAL)
OTHER POLICIES
General Course Policies
- Policies regarding attendance and participation: if you miss a quiz, you will not receive a grade for that quiz unless you have a serious reason, then you will receive a grade for the quiz according to your final grade.
- Policy regarding late assignments, make-up exams, and extra credit: no late assignments, make-up exams, and extra credit in general.
- Policy regarding incompletes: no incomplete in general.
- Policy on electronic devices (cell phones, pagers, computers, etc.): should be turned off or on silence in class.
University Requirements
- Academic Honesty and Honor Code Statement: http://cs.gmu.edu/wiki/pmwiki.php/HonorCode/CSHonorCodePolicies
- Disability Statement: http://ods.gmu.edu.
ACADEMIC INTEGRITY
GMU is an Honor Code university; please see the University Catalog for a full
description of the code and the honor committee process. The principle of
academic integrity is taken very seriously and violations are treated gravely.
What does academic integrity mean in this course? Essentially this: when you
are responsible for a task, you will perform that task. When you rely on
someone else’s work in an aspect of the performance of that task, you will give
full credit in the proper, accepted form. Another aspect of academic integrity
is the free play of ideas. Vigorous discussion and debate are encouraged in
this course, with the firm expectation that all aspects of the class will be
conducted with civility and respect for differing ideas, perspectives, and
traditions. When in doubt (of any kind) please ask for guidance and
clarification.
GMU EMAIL ACCOUNTS
Students must activate their GMU email accounts to receive important University
information, including messages related to this class. You should understand
that your emailbox may be full, so check your email and make sure you have
enough space daily.
OFFICE OF DISABILITY SERVICES
If you are a student with a disability and you need academic accommodations,
please see me and contact the Office of Disability Services (ODS) at 993-2474.
All academic accommodations must be arranged through the ODS. http://ods.gmu.edu
OTHER USEFUL CAMPUS RESOURCES:
WRITING CENTER: A114 Robinson Hall; (703) 993-1200;
http://writingcenter.gmu.edu
UNIVERSITY LIBRARIES “Ask a Librarian”
http://library.gmu.edu/mudge/IM/IMRef.html
COUNSELING AND PSYCHOLOGICAL SERVICES (CAPS): (703) 993-2380;
http://caps.gmu.edu
UNIVERSITY POLICIES
The University Catalog, http://catalog.gmu.edu, is the central resource for
university policies affecting student, faculty, and staff conduct in university
affairs.