CS 262: Introduction to Low-Level Programming

Course Syllabus - Summer 2021

 

George Mason University

Department of Computer Science

 

Section:  B01

Format: Asynchronous

Class Location: Online (Blackboard Collaborate Ultra)

 

Instructor: Prof. Ana Loreto Gonzalez

Email: loreto@gmu.edu

Office Hours: F, 9:00 – 10:30 AM using Blackboard Collaborate Ultra

 

GTA: Antara Mahmud

Email: amahmud4@masonvale.gmu.edu

Office Hours: W, 8:30 – 10:30 AM using Blackboard Collaborate Ultra

 

 

Labs

 

Section           Days   Time                          Location

2B1            T,TR   09:00 – 09:50 AM    Blackboard Collaborate Ultra [Master Course]

2B2            T,TR   10:00 – 10:50 AM    Blackboard Collaborate Ultra [Master Course]

 

 

Class Communications:  CS 262 will be by email using your GMU email account. When you email, please include your name and Gnumber. Write the topic in the subject header.

 

 

Textbook

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

 

Complementary Books:

·      Byron S. Gottfried, Programming with C, 2nd ed., Schumm’s Outline, 1996 or the latest [PwC]

·      Peter Printz and Tony Crawford, C in a Nutshell: A Desktop Quick Reference, 1st ed., O'Reilly', 2006 [CiN]

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

 

 

Course Description

 

This course is intended to prepare students for topics in systems programming. It emphasizes relevant concepts of the C programming language, as well as the use of main commands of the Unix Operating System.

 

C is a high-level programing language that offers the programmer direct access to much of the underlying hardware and direct access to some operating system services for programs running under Unix. These features make C the preference language of choice for system programming.

 

Prerequisites: (CS 110* or 101*) and (CS 211 or 222) >> *May be taken concurrently

 

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 and debugging.

 

 

Evaluation and Grading

 

Grade Distribution

·      Homeworks               30%    drop1 lowest, average others evenly

·      Project                        15%

·      Quizzes                      15%    drop1 lowest, average others evenly

·      Midterm                     20%    see midterm replacement policy below

·      Final exam                 20%    (cumulative) Must pass final/testing ag. to pass class

 

Letter Grade Distribution

 

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

S >= 98    A+

S >= 90    A

S >=88     B+

S >=80     B

S >=78     C+

S >=70     C

S >=60     D

S <60        F

 

There will be NO make-up or extra-credit assignments at the end of the semester

 

Grading Elements Policies

 

Each programming assignment is an individual effort, NO collaboration allowed

 

·    Homeworks: Description will be posted on Blackboard on Sundays.

o  Each homework has a posted deadline.

o  Submissions must be through Blackboard by the due date.

o  The latest you can turn in work is 48 hours after the posted deadline.

o  Each student gets TWO Emergency-Day tokens, which are automatically used by submissions that are between 0-24 and 24-48 hours late to avoid points penalty.

o  Each day late (or portion), when not covered by a token, lowers the highest score by 10%.

o  During labs your GTA will provide assistance and give hints to develop your assignments.

 

·    Project:   There is ONE programming project.

o   Description will be posted on Blackboard on July 5.

o   Student’s solutions must be submitted on Blackboard by the assigned due date.  

o  The deadline for submission is on July, 18 11:59 pm ET.

o  The latest you can turn your project is 24 hours after the posted deadline.

o  There is NO Emergency-Day tokens for the project.

o  Late project submission per day (or portion) is penalized 15% of the highest possible score.

 

·    Quizzes and Exams: All quizzes and exams must be taken during their availiability date/time. Passing this time, NO make-up of quizzes or exams are given.

 

Exams Notes and Midterm replacement policy

o  The final exam is cumulative. If you perform better on the final exam than your midterm exam, we will replace the midterm grade with the final grade.

o  If you know in advance that you are unable to make an exam for a valid and unavoidable reason (such as a scheduled surgery, etc.), you must notify the professor at least one week before the scheduled exam date to make arrengments, and provide valid documentation to have chance to take a make-up.

o  Per departmental policy, you must pass a significant exam threshold to receive a passing grade in this class, regardless of your performance on other assignments.

o  Failing the final exam (<60.0%), will result in a failing grade (F) for the entire course unless you have achieved an average exam score FAS >=65%,

where FAS = (midterm + final)/2

 

 

Learning Disabilities

 

·    If you are a student with a learning disability or other condition, please contact the Office of Disability Services (ODS) at (703) 993-2474.

·    Please email the professor the corresponding accomodation paperwork to set your accommodations.

·    Accomodations for quizzes and exams are automatically adjusted when taking the assessment

·    In case you need extra time for a programming assignment you MUST make the request no later than 24 hours before the deadline.

 

 

Honor Code Policies

 

·      All students are expected to abide by the GMU Honor Code. This policy is rigorously enforced. All class-related assignments are considered individual efforts unless explicitly expressed otherwise (in writing). Review the university honor code and present any questions regarding the policies to instructor.


Cheating on any assignment will be prosecuted and result in a notification of the Honor Committee as outlined in the GMU Honor Code. Sharing, collaboration, or looking at any code related to programming assignments that is not your own is considered cheating. See Programming Polices below.


The computer science department has an additional, more restrictive CS Honor Code that you are also subject to. Make sure you read and familiarize yourself with these rules.

 

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.

 

 

Course Topics

 

The course will cover the following topics

 

·      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 and Valgrind

·      Compiling, Linking, Makefiles, using multiple source files

 

 

Tentative Schedule:

 

#Week

Date

Lecture Topics

Reading Assignments

Assignments/Assesments (Time ET)

 

 

 

 

 

 

Available

Due

 

 

Introductory Concepts

Ch1

H1

Su 6/6

 

1

Jun 1 - Jun 6

Fundamentals

Ch2 (skip 2.9)

 

 

 

 

 

Operators and Expressions

 

 

 

 

 

User input & Basic Makefiles

Ch3

H2

Su 6/13

H1 (Sa 6/12)

2

Jun 7 - Jun 13

Control Statements

Ch19 [CiN]

Q1

Fr 6/11 8:00 - 8:00 pm

 

 

 

 

 

 

 

 

 

 

Functions

Ch4 (4.1 - 4.10)

H3

Su 6/20

H2 (Sa 6/19)

3

Jun 14 - Jun 20

Arrays

Ch5 (5.1-5.6)

Q2

Fr 6/18 8:00 am - 8:00 pm

 

 

 

 

Ch7 [PwC]

 

 

 

 

 

Arrays of Characters

Ch4 (4.11)

H4

Su 6/27

H3 (Sa 6/26)

4

Jun 21 - Jun 27

Multidimensional Arrays

Ch5 (5.7- 5.10)

Midterm

Fr 6/25 1:00 pm - Sa 6/26 1:00 pm

 

 

Preprocessing Directives

Ch14 [CiN]

 

 

 

 

 

Data Files and Formatting

Ch7

H5

Su 7/4

H4 (Sa 7/3)

5

Jun 28 - Jul 4

Debugging C Programs

Ch20 [CiN]

Q3

Fr 7/2 8:00 am - 8:00 pm

 

 

 

Using Multiple Source Files

Ch4 [HFC]

 

 

 

 

 

Pointers, Structures

Ch6

H6

Su 7/11

H5 (Sa 7/10)

6

Jul 5 - Jul 11

Self-referential structures

Ch11 [PwC]

P

Mo 7/5

 

 

 

Linked list

 

Q4

Fr 7/9 8:00 am - 8:00 pm

 

 

 

Valgrind

Ch6 [HFC]

 

 

H6 (Sa 7/17)

7

Jul 12 - Jul 18

The Unix System Interface

Ch2 (2.9), Ch8

 

 

P (Su 7/18)

 

 

Bitwise Operators

Ch13.2 [PwC]

Q5

Fr 7/16 8:00 am - 8:00 pm

 

 

 

 

 

 

 

 

8

Jul 19 - Jul 21

REVIEW

 

Final Ex.

Th 7/22 8:00 am - 8:00 pm

 

 

                     Ex. period [Jul 22-24]

 

(cumulative)