CS 222 - Computer Programming for Engineers

George Mason University
DEPARTMENT OF COMPUTER SCIENCE
Course Description: Summer 2020


Section - B01              Class Day/Time: MWF 8:15 a.m. - 10:15 a.m.   Class Location: Online

Instructor:     Prof. Ana Loreto Gonzalez Hernandez (loreto@gmu.edu)

Office Hours: M 11:00 - 12:00 (by appointment)


Textbook:

·      Byron S. Gottfried, Programming with C, 2nd ed., Schaum's Outline, 1996 or the latest.

Complementary Books:

·      Brian W. Kernighan and Dennis M. Ritchie, The C Programming Language, 2nd ed., Prentice Hall, 1988

·      Peter Printz and Tony Crawford, C in a Nustrell: A Desktop Quick Reference, 1st ed., O'Reilly', 2006 [CIN: ch14, ch18, ch19, ch20]

·      David Griffiths and Dawn Griffiths, Head First C, 1st ed., O'Reilly', 2012 [HFC: ch4]


Class 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:

·      Be able to implement, test, and debug a designed solution to a problem in a low-level programming language, specifically in C programming language.

·      Demonstrate a good understanding of C language constructs such as pointers, dynamic memory management, and address arithmetic.

·      Demonstrate a good understanding of C libraries for input and output, and the interface between C programs and the UNIX operating system.

·      Demonstrate an ability to use UNIX tools for program development.



 

Course Policies:

Class: Students 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 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 due date. 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. Develop your program and make sure it works at each developing stage.

 

Due Date: The Blackboard system permits you, to resubmit your work until the deadline, 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:  No late work is permitted. Midterm exams will be announced in class in advance. Schedule for quizzes is announced in advance. NO makeup for quizzes, midterm or final are given, only if you have a good reason and provide proofs could be consider.


Grading:

Grades will be computed using a weighted average of these scores with the weights:

·      Homework (30%)

·      Project (15%)

·      Quizzes (15 %)

·      Midterm exam (20 %)

·      Final examination (20 %)

 

Your overall course score, S, will be the sum of these points.

·      A+:      S is at least 98 points

·      A:        S is at least 90 points

·      B+:      S is at least 88 points

·      B:        S is at least 80 points

·      C+:      S is at least 78 points

·      C:        S is at least 70 points

·      D:        S is at least 60 points


 

Class Communications

CS 222 will be using the Blackboard system for most class communications. You are responsible for any notifications/assignments or information posted on Blackboard. and you will need to check Blackboard regularly for such notices. Individual communications with the professor may be done by email using your GMU email account. When you email, please be sure to include your name and the topic in the subject header.


Planned schedule of topics (In no particular order. May change without warning.):

·      Compiling, Linking, Makefiles, using multiple source files

·      C Types, Operators, and Expressions

·      Basic I/O, Input and Output Libraries

·      File I/O

·      Control Flow

·      Functions and Program Structure

·      Strings

·      Pointers and Arrays

·      Dynamic memory allocation

·      Structures

·      Bitwise operations

·      The Unix System Interface

·      vi/vim

·      Debugging using GDB

·      Linked list

·      Command line arguments

 


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


Other Policies

General Course Policies

University Policies, Requirements, and Services

 

Planned schedule of assignments, quizzes, exams and reading assignments

 

#Week

Meet

Date

Reading Assignment
(Per Week)

Assignment

Due to
(submission)

 

1

6/1

ch1(1.5-1.7), ch2, ch3

 

 

1

2

6/3

 

 

3

6/5

 

 

 

4

6/8

ch4(4.4-4.7), ch5(5.5, 5.6),
ch6, The Makefile
Compiling with GCC

H1

 

2

5

6/10

Q1

 

 

6

6/12

 

 

 

7

6/15

ch7, ch8
Debugging with GDB

H2

H1

3

8

6/17

 

 

9

6/19

 

 

 

10

6/22

ch9, ch10(10.1-10.3)

H3

H2

4

11

6/24

Q2

 

 

12

6/26

Midterm Exam

8:15 a.m. - 10:15 a.m.

 

13

6/29

ch10(10.4-10.8), ch12
Preprocessing directives

H4

H3

5

14

7/1

 

 

15

7/3

 

 

 

16

7/6

ch13
Multiple source files

H5

H4

6

17

7/8

Q3

 

 

18

7/10

P

 

 

19

7/13

ch11

Bonus H

H5

7

20

7/15

 

 

21

7/17

 

 

 

22

7/20

Review

 

Bonus H, P

8

23

7/24

 

Final Exam (Cumulative)

7:30 a.m. - 10:15 a.m.