CS 222 - Computer Programming for Engineers (3 Units)
George
Mason University
DEPARTMENT OF COMPUTER SCIENCE
Course Description: Spring 2020
Office/Hours: Check out my homepage: 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.
Course outcomes:
COURSE POLICIES
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, 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% of the total credits. 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 in advance. In-class quizzes or attendances (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.
GRADING POLICY
There are all together 100 points:
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/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)
PROGRAMMING POLICIES
(1) No sharing or discussion of
code for assignments. Unless specifically stated otherwise, all
assignments are individual assignments, not group assignments. 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. 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 back up 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
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
Pointers and
arrays
Ch.
6-7
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
10 Text
and binary file
processing
Ch. 11
11
Programming in the
large
Ch. 12
12
Bitwise
operators
PPT notes
13
Dynamic data
structures
Ch. 13
14 (Optional)
15
Review
FINAL EXAM (Covering ALL MATERIAL)
OTHER POLICIES
General Course Policies
University Policies, Requirements,
and Services