CMSC 106 is an introduction to computing and program development in the C programming language. This includes a brief introduction to basic computer concepts, an understanding of the UNIX operating system sufficient for writing class programming assignments, studying the syntax and semantics of the basic control structures of C, learning C's fundamental data types and structures, understanding the design and methodical construction of computer programs, learning how to test and debug programs, and lastly, practice in these through creating several programs in C.
| Prequisites | MATH115 |
|---|---|
| Credits | 4 |
| Name | Office |
|---|---|
| Nelson Padua-Perez | AVW 1203 |
For office hours and other contact information, visit the staff link.
Please be aware of the TA room usage policy.| Title | Authors | ISBN |
|---|---|---|
| C Programming, 2nd edition | K.N. King | 9780393979503 |
Final grades will be computed according the following weights:
| 25% | Projects |
|---|---|
| 15% | Quizzes/Lab/Lecture Work |
| 30% | Midterms (2) |
| 30% | Final Exam |
Once we have graded any class material (e.g., exams, projects, etc.) we will post an announcement and a deadline by which you must submit any regrade request (if necessary). It is your responsibility to submit regrade requests by the specified deadline; no regrade requests will be processed afterwards.
Office hours get extremely busy the day before a project deadline. Therefore do not wait to start your projects. Regarding office hours and the TA Room:
You need to keep backups of your projects as you develop them. No extensions will be granted because you accidentally erased your project. Feel free to use the submit server as a backup tool by submitting often. You can also use tools like git, etc. Do not post code in any online system that is accessible to others (e.g., github).
Note that academic dishonesty includes not only cheating, fabrication, and plagiarism, but also includes helping other students commit acts of academic dishonesty by allowing them to obtain copies of your work. In short, all submitted work must be your own. Cases of academic dishonesty will be pursued to the fullest extent possible as stipulated by the Office of Student Conduct.
It is very important for you to be aware of the consequences of cheating, fabrication, facilitation, and plagiarism. For more information on the Code of Academic Integrity or the Student Honor Council, please visit http://www.shc.umd.edu.
The following are examples of academic integrity violations:
Additional information can be found in the sections titled "Academic Integrity" and "Code of Student Conduct" available at Course Related Policies.
We will be using (Piazza) for class communication. You will not be able to register to Piazza yourself. Your instructor will register you using the e-mail you have in the school system.
See the section titled "Attendance, Absences, or Missed Assignments" available at Course Related Policies.
See the section titled "Accessibility" available at Course Related Policies.
All course materials are copyright UMCP, Department of Computer Science © 2016. All rights reserved. Students are permitted to use course materials for their own personal use only. Course materials may not be distributed publicly or provided to others (excepting other students in the course), in any way or format.
This schedule is tentative and subject to change. Keep in mind that the slides may not include all the material discussed in lecture. You are responsible for any material we present in lecture, even if it does not appear in the posted slides.
| Week | Topics | Slides | Work |
|---|---|---|---|
| CMSC106 Schedule | |||
| Week #1 (Aug 29) |
Course Introduction, Introduction to Computer Programming, Unix Basics, Getting Started in C programming, Printing messages, Data Types and Declarations (Intro). |
01-Intro.pdf 02-CIntro.pdf |
|
| Week #2 (Sep 5) |
Data Types and Declarations, Expressions, Operators, Assignments, Input | 03-Input.pdf | Quiz (Wed) |
| Week #3 (Sep 12) |
Formattted Output, Math Library, C's conditional statements | 04-Conditionals.pdf |
P1 Out (Tue) Quiz (Wed) |
| Week #4 (Sep 19) |
C's looping statements | 05-Loops.pdf |
P1 Due (Wed) P2 Out (Thu) |
| Week #5 (Sep 26) |
Debugging/Testing (Intro and Tools), Design I, Functions (user--defined functions, parameters, local variables) |
06-Design.pdf 07-Functions.pdf |
Quiz (Wed) |
| Week #6 (Oct 3) |
Functions (Cont.), Debugging/Testing II, Random Values, Global Variables, Separate Compilation | 08-Functions-II.pdf |
P2 Due (Tue) Midterm #1 (Fri) |
| Week #7 (Oct 10) |
Pointers, Memory Maps, Early Warning Grades (Oct 13) | 09-Testing-Pointers.pdf |
P3 Out (Tue) |
| Week #8 (Oct 17) |
Pointers/Memory Maps (Cont.), One-dimensional Arrays | 10-Arrays.pdf | Quiz (Wed) |
| Week #9 (Oct 24) |
One-dimensional Arrays (Cont.), Initializers, Array Parameters, Pointer Arithmetic, Design, Debugger (gdb), Memory Organization | 11-Arrays-Design.pdf |
P3 Due (Tue) Quiz (Wed) |
| Week #10 (Oct 31) |
Strings, String Library Functions, typedef |
12-Strings.pdf |
P4 Out (Tue) |
| Week #11 (Nov 7) |
String Examples, Testing/Debugging Strings |
Quiz (Wed) P4 Due (Fri) |
|
| Week #12 (Nov 14) |
Structures |
13-Structures.pdf |
Midterm #2 (Wed) |
| Week #13 (Nov 21) |
Structures |
P5 Out (Mon) Thanksgiving |
|
| Week #14 (Nov 28) |
Two-Dimensional Arrays, Structures Review | 14-Structures-Two-DimArrays.pdf 15-CommandLine-Args.pdf | Quiz (Wed) |
| Week #15 (Dec 5) |
Command Line Arguments, File I/O, Dynamic Memory Allocation, Miscellaneous |
Miscellaneous.pdf |
Course Evaluations |
| Week #16 (Dec 12) |
Final Exam Review |
P5 Due (Mon) Last Day of Classes (Mon Dec 12) Final Exam (Sat Dec 17, 4pm - 6pm) |
|
| Name | Nelson Padua-Perez |
|---|---|
| Office | AVW 1203 |
| Office Hours | Mon, Wed → 1:30 pm - 3:30 pm |
| nelson [AT] cs [DOT] umd [DOT] edu |
Please see Office Hours Guidelines. Also, please be aware of the TA room usage policy.
All TA office hours take place in AVW1112.
| Name | Pic | |
|---|---|---|
| Xiyang Dai (Grader) | xiyang.dai [AT] gmail [DOT] com | ![]() |
| Andrew Vorwald | andrew.vorwald [AT] gmail [DOT] com | ![]() |
| Name | Nelson Padua-Perez |
|---|---|
| Office | AVW 1203 |
| Office Hours | Mon, Wed → 1:30 pm - 3:30 pm |
| nelson [AT] cs [DOT] umd [DOT] edu |
Please see Office Hours Guidelines. Also, please be aware of the TA room usage policy.
All TA office hours take place in AVW1112.
| Name | Pic | |
|---|---|---|
| Xiyang Dai (Grader) | xiyang.dai [AT] gmail [DOT] com | ![]() |
| Andrew Vorwald | andrew.vorwald [AT] gmail [DOT] com | ![]() |
This schedule is tentative and subject to change. Keep in mind that the slides may not include all the material discussed in lecture. You are responsible for any material we present in lecture, even if it does not appear in the posted slides.
| Week | Topics | Slides | Work |
|---|---|---|---|
| CMSC106 Schedule | |||
| Week #1 (Aug 29) |
Course Introduction, Introduction to Computer Programming, Unix Basics, Getting Started in C programming, Printing messages, Data Types and Declarations (Intro). |
01-Intro.pdf 02-CIntro.pdf |
|
| Week #2 (Sep 5) |
Data Types and Declarations, Expressions, Operators, Assignments, Input | 03-Input.pdf | Quiz (Wed) |
| Week #3 (Sep 12) |
Formattted Output, Math Library, C's conditional statements | 04-Conditionals.pdf |
P1 Out (Tue) Quiz (Wed) |
| Week #4 (Sep 19) |
C's looping statements | 05-Loops.pdf |
P1 Due (Wed) P2 Out (Thu) |
| Week #5 (Sep 26) |
Debugging/Testing (Intro and Tools), Design I, Functions (user--defined functions, parameters, local variables) |
06-Design.pdf 07-Functions.pdf |
Quiz (Wed) |
| Week #6 (Oct 3) |
Functions (Cont.), Debugging/Testing II, Random Values, Global Variables, Separate Compilation | 08-Functions-II.pdf |
P2 Due (Tue) Midterm #1 (Fri) |
| Week #7 (Oct 10) |
Pointers, Memory Maps, Early Warning Grades (Oct 13) | 09-Testing-Pointers.pdf |
P3 Out (Tue) |
| Week #8 (Oct 17) |
Pointers/Memory Maps (Cont.), One-dimensional Arrays | 10-Arrays.pdf | Quiz (Wed) |
| Week #9 (Oct 24) |
One-dimensional Arrays (Cont.), Initializers, Array Parameters, Pointer Arithmetic, Design, Debugger (gdb), Memory Organization | 11-Arrays-Design.pdf |
P3 Due (Tue) Quiz (Wed) |
| Week #10 (Oct 31) |
Strings, String Library Functions, typedef |
12-Strings.pdf |
P4 Out (Tue) |
| Week #11 (Nov 7) |
String Examples, Testing/Debugging Strings |
Quiz (Wed) P4 Due (Fri) |
|
| Week #12 (Nov 14) |
Structures |
13-Structures.pdf |
Midterm #2 (Wed) |
| Week #13 (Nov 21) |
Structures |
P5 Out (Mon) Thanksgiving |
|
| Week #14 (Nov 28) |
Two-Dimensional Arrays, Structures Review | 14-Structures-Two-DimArrays.pdf 15-CommandLine-Args.pdf | Quiz (Wed) |
| Week #15 (Dec 5) |
Command Line Arguments, File I/O, Dynamic Memory Allocation, Miscellaneous |
Miscellaneous.pdf |
Course Evaluations |
| Week #16 (Dec 12) |
Final Exam Review |
P5 Due (Mon) Last Day of Classes (Mon Dec 12) Final Exam (Sat Dec 17, 4pm - 6pm) |
|
You must satisfy a minimum set of requirements for each project (Good Faith Attempt) otherwise you will not pass the course (automatic grade of F). Each project defines its own good faith attempt criteria. Notice that you will not receive extra points for completing the good faith attempt. The grade you obtain in the project will be based on your ontime/late submission.
| Project | Good Faith Attempt | Deadline |
| Project #1 | Public Tests | Thu Sep 29 |
|---|---|---|
| Project #2 | Public Tests | Wed Nov 30 |
| Project #3 | Public Tests | Wed Nov 30 |
| Project #4 | Public Tests | Wed Nov 30 |
| Project #5 | 2 out of 4 Public Tests | Tue Dec 13 |
After any class material is graded, you have a period to address any grading concerns. Unfortunately we will not be able to address any grading concerns after the specified deadline.
| Class Material | Grading Concerns Deadline |
|---|---|
| Quiz #1 | Tue Sep 20 |
| Quiz #2 | Tue Sep 27 |
| Project #1 | Wed Oct 5 |
| Quiz #3 | Tue Oct 11 |
| Midterm #1 | Thu Oct 20 |
| Project #2 | Mon Oct 24 |
| Quiz #4 | Mon Nov 7 |
| Quiz #5 | Mon Nov 14 |
| Quiz #6 | Mon Nov 21 |
| Exercise #1 (ArrayFunctions) | Mon Nov 21 |
| Project #3/#4 | Thu Dec 1 |
| Midterm #2 | Wed Dec 7 |
| Quiz #7 | Mon Dec 12 |
The planned dates when projects will be handed out and due is given in the course schedule. Beware that the exact dates are subject to change, but we will try to give you fair notice of any changes.
| Project | Due Date |
|---|---|
| Project #1 | Wed Sep 21 |
| Project #2 | Tue Oct 4 |
| Project #3 | Tue Oct 25 |
| Project #4 | Fri Nov 11 |
| Project #5 | Mon Dec 12 |
A few days prior to each quiz we plan to post a worksheet on this page. The dates for the quizzes are given in the course schedule. Beware that the exact dates are subject to change, but we will try to give you fair notice of any changes.
Worksheets are not turned in and they are not graded. The problems on the worksheet are for your own benefit and are designed to prepare you for the quiz. We will not be giving answers to the worksheet problems, but if you have a question you can talk to the course TA(s).
| Worksheet | Quiz Date |
|---|---|
| Worksheet #1 | Wed Sep 7 |
| Worksheet #2 | Wed Sep 14 |
| Worksheet #3 | Wed Sep 28 |
| Worksheet #4 | Wed Oct 19 |
| Worksheet #5 | Wed Oct 26 |
| Worksheet #6 | Wed Nov 9 |
| Worksheet #7 | Wed Nov 30 |
This page provides information regarding course exams.
| Exam | Date |
| Midterm I | Fri Oct 7 |
|---|---|
| Midterm II | Wed Nov 16 |
| Final | Sat Dec 17 |
We will be using (Piazza) for class communication. Regarding Piazza:
| Lecture | Date |
|---|---|
| Week #1 | Data Types, Printf, Printf Part 2 |
| Week #2 | scanf/printf part I, scanf/printf part II, |
| Week #3 |
Blocks-Compound Statements,
Cascaded If Statements Short-Circuit and Logical Operators, The sizeof Operator and Types |
| Week #4 | Comman Operator & Nested Loops, Break Statement & Common Loop Errors |
| Week #5 | Variable Scope & Functions Parameters |
| Week #6 | Separating Code Part I, Separating Code Part II |
| Week #8 | Dereferencing Pointers, Memory Maps, Garbage Pointers Intro to Arrays Part I Intro to Arrays Part II |
| Week #9 | Pointer Arithmetic |
| Week #10 | Strings and Arrays Scanf |
| Week #11 | Sizeof vs. strlen typedef |
| Week #12 | Pointers Review/Command Line Arguments |
| Week #14 | Structures |
CMSC 106 is an introduction to computing and program development in the C programming language. This includes a brief introduction to basic computer concepts, an understanding of the UNIX operating system sufficient for writing class programming assignments, studying the syntax and semantics of the basic control structures of C, learning C's fundamental data types and structures, understanding the design and methodical construction of computer programs, learning how to test and debug programs, and lastly, practice in these through creating several programs in C.
© 2016 University of Maryland College Park, MD 20742