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.
No required textbooks.
Final grades will be computed according the following weights:
| 25% | Projects |
|---|---|
| 15% | Quizzes / Lab Work |
| 30% | Midterms (12% and 18%) |
| 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:
We will be using (Piazza) for class communication. Regarding Piazza:
Any student who needs to be excused for an absence from a single lecture, recitation, or lab due to a medically necessitated absence shall:
Any student who needs to be excused for a prolonged absence (2 or more consecutive class meetings) or for a Major Scheduled Grading Event, must provide written documentation of the illness from the Health Center or from an outside health care provider. This documentation must verify dates of treatment and indicate the time frame that the student was unable to meet academic responsibilities. No diagnostic information shall be given. The Major Scheduled Grading Events for this course include midterm(s) and final exam.
It is also the student's responsibility to inform the instructor of any intended absences from exams for religious observances in advance. Notice should be provided as soon as possible, but no later than the Monday prior to the exam for both the midterm(s) and the final.
Any student eligible for and requesting reasonable academic accommodations due to a disability is requested to provide a letter of accommodation from the Office of Disability Support Services within the first two weeks of the semester.
All course materials are copyright UMCP, Department of Computer Science © 2015. 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/Column | Work |
|---|---|---|---|
| CMSC106 Schedule | |||
| Week #1 (Aug 31) |
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 7) |
Data Types and Declarations, Expressions, Operators, Assignments, Input | 03-Input.pdf | |
| Week #3 (Sep 14) |
Formattted Output, Math Library, C's conditional statements | 04-Conditionals.pdf |
P1 Out (Mon) Q1 (Fri) |
| Week #4 (Sep 21) |
C's looping statements, Debugging/Testing I (Intro and Tools) | 05-Loops.pdf |
P1 Due (Thu) P2 Out (Thu) |
| Week #5 (Sep 28) |
Design/Testing I, Functions (user--defined functions, parameters, local variables) |
06-Design.pdf 07-Functions.pdf |
Q2 (Wed) |
| Week #6 (Oct 5) |
Functions (Cont.), Debugging/Testing II, Random Values, Global Variables, Separate Compilation | 08-Functions-II.pdf | P2 Due (Tue) |
| Week #7 (Oct 12) |
Pointers, Memory Maps | 09-Testing-Pointers.pdf |
P3 Out (Mon) Midterm #1 (Fri) |
| Week #8 (Oct 19) |
Pointers/Memory Maps (Cont.), One-dimensional Arrays | 10-Arrays.pdf | |
| Week #9 (Oct 26) |
One-dimensional Arrays (Cont.), Initializers, Array Parameters, Pointer Arithmetic, Design, Debugger (gdb), Memory Organization | 11-Arrays-Design.pdf |
P3 Due (Tue) Q3 (Fri) |
| Week #10 (Nov 2) |
Strings, String Library Functions, typedef |
12-Strings.pdf |
P4 Out (Mon) |
| Week #11 (Nov 9) |
String Examples, Testing/Debugging Strings | Q4 (Fri) | |
| Week #12 (Nov 16) |
Structure Concepts, Command Line Arguments |
13-Structures.pdf 14-StructuresII-CmdLine.pdf |
P4 Due (Wed) |
| Week #13 (Nov 23) |
Midterm Review (9 am), Midterm (5 pm) | 15-2Dim-Arrays-FileIO.pdf |
Midterm #2 (Mon) P5 Out (Tue) Thanksgiving |
| Week #14 (Nov 30) |
Two-Dimensional Arrays, File I/O | 15-2Dim-Arrays-FileIO.pdf | Q5 (Fri) |
| Week #15 (Dec 7) |
Make Utility, Dynamic Memory Allocation, Miscellaneous |
16-Make.pdf 17-DynMem.pdf |
P5 Due (Thu) Course Evaluations Last Day of Classes (Fri Dec 11) Final Exam (Thu Dec 17, 4pm - 6pm) |
| Name | Nelson Padua-Perez |
|---|---|
| Office | AVW 1203 |
| Office Hours | Mon → 2:30 pm - 3:30 pm Thu 11 am → 12 pm |
| nelson [AT] cs [DOT] umd [DOT] edu |
Please see Office Hours Guidelines
All TA office hours take place in AVW 1112.
| Name | Pic | |
|---|---|---|
| Hyunjong Cho | cho [AT] cs [DOT] umd [DOT] edu | ![]() |
| Andrew Vorwal | andrew.vorwald [AT] gmail [DOT] com | ![]() |
| Name | Nelson Padua-Perez |
|---|---|
| Office | AVW 1203 |
| Office Hours | Mon → 2:30 pm - 3:30 pm Thu 11 am → 12 pm |
| nelson [AT] cs [DOT] umd [DOT] edu |
Please see Office Hours Guidelines
All TA office hours take place in AVW 1112.
| Name | Pic | |
|---|---|---|
| Hyunjong Cho | cho [AT] cs [DOT] umd [DOT] edu | ![]() |
| Andrew Vorwal | 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/Column | Work |
|---|---|---|---|
| CMSC106 Schedule | |||
| Week #1 (Aug 31) |
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 7) |
Data Types and Declarations, Expressions, Operators, Assignments, Input | 03-Input.pdf | |
| Week #3 (Sep 14) |
Formattted Output, Math Library, C's conditional statements | 04-Conditionals.pdf |
P1 Out (Mon) Q1 (Fri) |
| Week #4 (Sep 21) |
C's looping statements, Debugging/Testing I (Intro and Tools) | 05-Loops.pdf |
P1 Due (Thu) P2 Out (Thu) |
| Week #5 (Sep 28) |
Design/Testing I, Functions (user--defined functions, parameters, local variables) |
06-Design.pdf 07-Functions.pdf |
Q2 (Wed) |
| Week #6 (Oct 5) |
Functions (Cont.), Debugging/Testing II, Random Values, Global Variables, Separate Compilation | 08-Functions-II.pdf | P2 Due (Tue) |
| Week #7 (Oct 12) |
Pointers, Memory Maps | 09-Testing-Pointers.pdf |
P3 Out (Mon) Midterm #1 (Fri) |
| Week #8 (Oct 19) |
Pointers/Memory Maps (Cont.), One-dimensional Arrays | 10-Arrays.pdf | |
| Week #9 (Oct 26) |
One-dimensional Arrays (Cont.), Initializers, Array Parameters, Pointer Arithmetic, Design, Debugger (gdb), Memory Organization | 11-Arrays-Design.pdf |
P3 Due (Tue) Q3 (Fri) |
| Week #10 (Nov 2) |
Strings, String Library Functions, typedef |
12-Strings.pdf |
P4 Out (Mon) |
| Week #11 (Nov 9) |
String Examples, Testing/Debugging Strings | Q4 (Fri) | |
| Week #12 (Nov 16) |
Structure Concepts, Command Line Arguments |
13-Structures.pdf 14-StructuresII-CmdLine.pdf |
P4 Due (Wed) |
| Week #13 (Nov 23) |
Midterm Review (9 am), Midterm (5 pm) | 15-2Dim-Arrays-FileIO.pdf |
Midterm #2 (Mon) P5 Out (Tue) Thanksgiving |
| Week #14 (Nov 30) |
Two-Dimensional Arrays, File I/O | 15-2Dim-Arrays-FileIO.pdf | Q5 (Fri) |
| Week #15 (Dec 7) |
Make Utility, Dynamic Memory Allocation, Miscellaneous |
16-Make.pdf 17-DynMem.pdf |
P5 Due (Thu) Course Evaluations Last Day of Classes (Fri Dec 11) Final Exam (Thu 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 | Mon Dec 7 |
|---|---|---|
| Project #2 | Public Tests | Mon Dec 7 |
| Project #3 | Public Tests | Mon Dec 7 |
| Project #4 | Public Tests | Mon Dec 7 |
| Project #5 | Public Tests | Tue Dec 15 |
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 | Wed Sep 30 |
| Project #1 | Mon Oct 5 |
| Quiz #2 | Mon Oct 12 |
| Project #2 | Mon Oct 19 |
| Midterm #1 | Mon Oct 26 |
| Quiz #3 | Tue Nov 10 |
| Quiz #4 | Fri Nov 27 |
| Midterm #2 | Tue Dec 8 |
| Project #3/#4 | Tue Dec 8 |
| Quiz #5 | Thu Dec 10 |
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 | Thu Sep 24 |
| Project #2 | Tue Oct 6 |
| Project #3 | Tue Oct 27 |
| Project #4 | Wed Nov 18 |
| Project #5 | Thu Dec 10 |
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 | Fri Sep 18 |
| Worksheet #2 | Wed Sep 30 |
| Worksheet #3 | Fri Oct 30 |
| Worksheet #4 | Fri Nov 13 |
| Worksheet #5 | Fri Dec 4 |
This page provides information regarding course exams.
| Exam | Date |
| Midterm I | Fri Jun 26 |
|---|---|
| Midterm II | Mon Nov 23 |
| Final | Thu 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.
© 2015 University of Maryland College Park, MD 20742