George Mason University
DEPARTMENT OF COMPUTER SCIENCE
Course Description: Fall 2017
Office/Hours: Eng. 4446; R 4:30-6:30pm; Prof. Jim X. Chen
TEXTBOOK: Hanly and Koffman, "Problem Solving and Program Design in C," 7th ed., 2013 or the latest.
DESCRIPTION: CS 222 is a second course in computer programming, emphasizing programming concepts relevant to engineers. 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.
Class: Students are expected to attend all lectures and are responsible for all material covered in lectures. Students are expected to work independently outside of class on homework assignments and projects. Course-related materials are posted on Blackboard in the folder Course Content.
Reading: Be aware that some material covered in class, which are posted in Course Content, may not be found in the textbook. For any doubts, students have opportunities to ask questions in class, on Blackboard/Piazza, or during UTA/GTA/instructor office hours.
Assignments: Homework and project assignments will be posted on Blackboard in the folder Assignments as they are assigned, and student solutions must be submitted on Blackboard by the specified deadline. For programming assignments, solution programs must run without obvious errors (even if not all functionalities are present). Any solution program that is submitted but either does not compile or has major errors when it is run will receive no more than 50% credit. Therefore, develop your program and make sure it works at each developing stage.
Deadlines: The Blackboard system permits you, as a student in this course, to resubmit your work until the deadline for THREE times, so you may submit your work early and resubmit if you improve your work prior to the deadline. If you cannot finish, you should submit your work before the deadline for partial credits.
Late work and missing participation: No late work is accepted. Midterm exams will be announced in class and posted in Blackboard/Piazza in advance. In-class quizzes or attendencies (class participation) will not be announced in advance, but they happen almost every class. For any missing work (assignments, quizzes, projects, midterm exams, or class participation), the missing grade will be the same as the final exam grade if you have a good reason and provide proofs.
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.
Your course grade will be a weighted average of the following items:
Class participation may include in-class exercises or pop quizzes.
Your overall course score, S, will be the sum of these points.
CS 222 will be using the Blackboard system for most class communications. Piazza may be used for questions, discussions, and communications as an alternative. You are responsible for any notifications/assigments or information posted on Blackboard either by your instructor or the class GTA/UTA. Some information may be disseminated through Blackboard or email 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)
(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. Suspected honor code violations are taken very seriously, and will be reported to the Honor Committee. (See CS 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 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 don't 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. However, submitted programs must run under gcc 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.
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, simple Unix, C language elements Ch. 0-1 & online material for UNIX
Structure of a C program, operators,
Ch. 2-3 & online material for "vi"
"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
6 Strings Ch. 8
Review and Midterm exam
7 Recursion Ch. 9
8 Structure and union types Ch. 10
9 Makefiles, compilation of multiple files PPT notes
Text and binary file
11 Programming in the large Ch. 12
12 Bitwise operators PPT notes
13 Dynamic data structures Ch. 13
14 (Optional) Processes and Threads, introduction to C++ PPT notes
FINAL EXAM (Covering ALL MATERIAL)
General Course Policies
University Policies, Requirements, and Services