CS 112 Syllabus - Summer 2013
1 Course Basics
1.1 Course Outcomes
- An ability to use procedural programming language concepts including expressions, decision statements, simple data types, Boolean logic, input/output, loop constructs, and procedures.
- An ability to combine programming techniques to solve problems of varying degrees of difficulty.
- An ability to refine computer programs through testing and debugging to ensure proper operation.
- An ability to find and understand programming language documentation to learn new information needed to solve programming problems.
1.2 Prerequisite:
C or better in MATH 104, 105, or 113 (or sufficient score on the math placement test). Corequisite: CS Majors must also be enrolled in CS 101 this semester.
1.3 Text
- The Practice of Computing Using Python, second edition. William Punch and Richard Enbody.
- An eText version is available.
- readings will be suggested, but there will not be required problems from the book.
- an older version of the text uses Python 2.7.x, instead of Python 3.x. There are a few significant differences in syntax, but if you can keep track of these (and different page numbers), you might be able to use an old version of the book if you've already got access to it.
2 Contact
Professor | GTA | |
---|---|---|
name | Mark Snyder | Preetham Vemasani |
msnyde14@gmu.edu | pvemasan@masonlive.gmu.edu | |
office | ENGR 5346 | ENGR 4456 |
703.993.5624 | ||
office hours: | T 1-4pm | T/R 4-6pm |
R 1-2pm | ||
or by appointment |
2.1 Contacting Us
All correspondence will go through Piazza. You can send private messages to the instructors (professor, GTAs, UTAs all) as well as post public questions visible to all students, collaborate on responses, and tag everything by topic.
2.2 Course Materials
- All assignments will be submitted (per published deadlines) via Blackboard. This is basically the only use for Blackboard in the course. (submitting work, viewing grades).
- Course discussions will take place on Piazza. Go sign up now, so you don't miss announcements.
- Documents such as GTA/UTA contacts, schedules, and lecture slides will be on piazza.
3 Grading
The course will have a midterm and a final. Much of the work during the semester will be completing projects, as well as regular assessments in lab (quizzes and programming tasks).
In general, all work should be available about one week after turning it in.
Category | Percent Final Grade |
---|---|
Projects | 45% |
Lab Assessments | 15% |
Midterm | 15% |
Final Exam | 25% |
3.1 Projects
All project grades will be averaged together. Projects are due at a specific time on a specific day. Each 24-hour period that is entered before turning in the assignment will incur a 25% "ceiling penalty". This means your score will be the minimum between what functionality score you achieve on it and the penalties score. For instance, turning in an assignment 25 hours late is two "days" late, so the lateness penalty score would be 100-25-25 = 50%. If you scored a 93% for functionality, you would actually receive min(93,50)=50%. If you scored only a 43% for functionality, your score would be min(43,50)=43%. This is much better than a flat percentage penalty off - the missed points overlap with the penalty!
Each student will be given three Late-Day tokens to skip the late assignment penalty. They are automatically applied to the earliest late submissions.
The last project might not be allowed to be turned in late at all, to facilitate grading by the deadline. If this is the case, leftover late-day tokens will be worth a small reward.
The lowest project grade will be dropped.
After the first two projects, any code turned in that does not compile (specifically on Python 3) will receive at most 50%. No exceptions. At this point, if the grader is able to quickly fix your code, you might get some points back. If the grader cannot immediately spot and fix the issue, you'll be fortunate to get any points at all.
- Turning in code that runs is a big deal!
3.1.1 Turning it in on BlackBoard
You can submit your work an unlimited number of times to BlackBoard, and only the last version will be graded. You can also download your submitted attempts, and verify that you turned in a working copy.
- Turning in the wrong files will likely result in a zero.
- Catastrophic computer failure will not be cause for an extension. Use a backup service such as DropBox (or any cloud service), emailing yourself, storing to a USB drive, whatever it takes.
3.2 Lab Assessments
All lab assessment grades will be averaged together. Lab assessments will be either paper-and-pencil quizzes or computer-based tasks.
Any missed lab assessment is simply missed, regardless of the reason why (travel, illness, work, traffic, etc.)
We will drop the lowest two grades from this category.
If you choose to miss some early on, and later on have to miss for some understandable reason, that is too bad. Try to save them so you can actually throw out a bad grade, and not just to hide some zeroes.
3.3 Midterm and Final Exam
- these tests will focus on performing programming.
- they will be entirely paper and pencil - no computers.
- all students must have their GMU identification available on testing days
- if you miss the midterm, and a valid reason is verified with documentation (ER visit, traffic accident, violent illness), I may elect to allow the final exam to count 40% to give you a sort of do-over. This policy is not automatic, however.
- if you miss the final, there is very little I can do for you. Don't miss the final!
- the final will not be given early. You are starting the course with knowledge of the schedule (see below).
- You must pass the final exam to pass the course. You also need to have a passing percentage grade, but failure on the final exam indicates a systemic lack of true progress. After well over 1,000 students, I've only had to apply this rule a handful of times (I think three times). Generally, students who fail the final exam do not have a passing grade in the course anyways.
- there will only be a curve if a specific question ends up being too ambiguous or otherwise obviously unfair.
Exam Schedule | X02 | X03 |
---|---|---|
Midterm | (W) July 10th | (W) July 10th |
Final Exam | (M) August 5th | (W) August 7th |
3.4 Calculating Semester Grades
- given the percentages above, the allowed assessment/project drops, you should always be able to calculate your semester grade at any point in the semester.
- there will be no make-up or extra-credit assignments at the end of the semester; your grade should be a measure of your semester-long progress.
Grades will be assessed on the following scale:
Grade | Cut-off Score |
---|---|
A+ | 98 % |
A | 92 % |
A- | 90 % |
B+ | 88 % |
B | 82 % |
B- | 80 % |
C+ | 78 % |
C | 72 % |
C- | 70 % |
D | 60 % |
F | — |
3.5 Contested Grades
If you feel points have been incorrectly deducted, contact the grader. For all projects and lab assessments, that is your GTA who leads the lab section. For the midterm and final exam, that is the professor.
If you have not initiated contact within a week of receiving the grade, it is too late. We cannot entertain a swarm of contested grades at the eleventh hour to try to maximize end-of-semester grades.
We strive to grade each student's work fairly and uniformly, often through specific tests, which might even be automated as part of the grading process.
4 The Honor Code
The honor code at George Mason is an important part of our academic culture. A degree from this institution should be a direct measure of your own progress and abilities, and as such at all times we must ensure that all work that should be your own is your own.
I personally take the honor code very seriously. Any attempts at sharing code, algorithms, or other violations of the honor code simply will not be tolerated.
As seductively simple as it may seem to just copy and paste work from a friend, remember that it is just as easy to compare your work electronically, and discover the similarities. Repeat to yourself: it's not worth trying to cheat. I will catch it, and sadly but surely, I will turn it in.
The penalty for cheating will be far worse than a zero grade.
4.1 Some Specifics and Links
- All students will abide by GMU's Honor Code.
- All work must be your own. If you are caught cheating, you and every other involved student will be turned in to the honor court.
- See the CS Honor Code Policies to understand better what constitutes cheating in the CS setting.
- See the CS Statement on Academic Integrity for more information.
5 Learning Disabilities
- Students with a learning disability or other condition (documented with GMU's Office of Disability Services) that may impact academic performance should speak with the professor ASAP to discuss appropriate accommodations. I am quite happy to assist as is appropriate, but it must be documented ahead of time.
6 Schedule for X02
Reading Descriptions:
- LANG readings are from for the language manual.
- LIB readings are from the library documentation.
- TEXT readings are from our text.
Lec | date | Topics | Readings (pre-lecture) |
---|---|---|---|
1 | M 6/17 | course intro | Using the Zeus Cluster (an option for your programming environment) |
numbers, expressions | TEXT (0.1-0.7): basic intro to CS | ||
strings, printing | |||
types | |||
2 | W 6/19 | basic algorithms, pseudocode | LIB (4.4): numeric types |
variables, identifiers, keywords | TEXT (1.1-1.4): interactive session, parts of a program | ||
assignment, statements vs expressions | LANG (1.2): notation (BNF) | ||
getting user input | LANG (2.1.3 comments, 2.1.8 indentation, 2.3-2.3.1 identifiers and keywords, 2.5 operators) | ||
calling functions | LIB (2 built-in functions) | ||
comments, code hygiene | TEXT (Ch.1 "beginnings", Ch.3 "Algorithms and Program Development") | ||
errors | |||
3 | M 6/24 | booleans, boolean operations | LANG (6.9-6.10) comparisons, boolean operations |
selection statements | LANG (8.1) if statements | ||
LIB (4.1-4.3) truth-value testing, boolean operations, comparisons | |||
TEXT (Ch.2 "Control") | |||
4 | W 6/26 | looping statements: while, for | LANG (8.2-8.3) while, for statements |
5 | M 7/1 | more control flow practice | LIB (4.6-4.6.1) string sequence type, common sequence operations |
testing via print statements | TEXT (Ch.4, "Working with Strings") | ||
string operations | LIB (27.3-27.4) python debugger and commands | ||
lists, tuples | LIB (4.6.3) mutable sequence operations | ||
TEXT (Ch.7, "Lists and Tuples") | |||
6 | W 7/3 | functions intro | TEXT (CH.8.1-8.2, "Functions and Scope") |
TEXT (Ch. 6, "Functions - QuickStart") | |||
7 | M 7/8 | functions: creating, using | |
arguments, return values | |||
scope | |||
mutability across function calls | |||
8 | W 7/10 | MIDTERM | |
9 | M 7/15 | dictionaries, sets | LIB (4.9-4.10) sets, mapping types |
TEXT (Ch.9 "Dictionaries and Sets") | |||
10 | W 7/17 | file input/output | TEXT (CH.5 "Files and Exceptions I", 14.1-14.2 "More Details on Files" and "CSV FIles") |
modules | |||
11 | M 7/22 | exceptions | LANG (4.2 Exceptions, 7.8 raise statement) |
12 | W 7/24 | recursion | TEXT (Ch.16, "Recursion") |
13 | M 7/29 | basics of object oriented programming | TEXT (Ch. 11.1-11.2 OO Programming, 11.7 "Python and OOP") |
TEXT (Ch. 11.3-11.6, classes and objects in Python) | |||
14 | W 7/31 | classes: creation, usage | |
(finish up topics; review for final) | |||
15 | M 8/5 | FINAL EXAM |
7 Schedule for X03
Reading Descriptions:
- LANG readings are from for the language manual.
- LIB readings are from the library documentation.
- TEXT readings are from our text.
Lec | date | Topics | Readings (pre-lecture) |
---|---|---|---|
1 | M 6/24 | course intro | Using the Zeus Cluster (an option for your programming environment) |
numbers, expressions | TEXT (0.1-0.7): basic intro to CS | ||
strings, printing | TEXT (1.1-1.4): interactive session, parts of a program | ||
types | LIB (4.4): numeric types | ||
basic algorithms, pseudocode | TEXT (Ch.1 "beginnings", Ch.3 "Algorithms and Program Development") | ||
variables, identifiers, keywords | LANG (1.2): notation (BNF) | ||
assignment, statements vs expressions | LANG (2.1.3 comments, 2.1.8 indentation, 2.3-2.3.1 identifiers and keywords, 2.5 operators) | ||
getting user input | LIB (2 built-in functions) | ||
calling functions | |||
comments, code hygiene | |||
errors | |||
2 | W 6/26 | booleans, boolean operations | LANG (6.9-6.10) comparisons, boolean operations |
selection statements | LANG (8.1) if statements | ||
LIB (4.1-4.3) truth-value testing, boolean operations, comparisons | |||
TEXT (Ch.2 "Control") | |||
3 | M 7/1 | looping statements: while, for | LANG (8.2-8.3) while, for statements |
lists, tuples | LIB (4.6-4.6.1) string sequence type, common sequence operations | ||
TEXT (Ch.4, "Working with Strings") | |||
TEXT (Ch.7, "Lists and Tuples") | |||
4 | W 7/3 | string operations | LIB (4.6.3) mutable sequence operations |
functions intro | TEXT (CH.8.1-8.2, "Functions and Scope") | ||
testing via print statements | TEXT (Ch. 6, "Functions - QuickStart") | ||
LIB (27.3-27.4) python debugger and commands | |||
5 | M 7/8 | functions: creating, using | |
arguments, return values | |||
scope | |||
mutability across function calls | |||
6 | W 7/10 | MIDTERM | |
7 | M 7/15 | dictionaries, sets | LIB (4.9-4.10) sets, mapping types |
TEXT (Ch.9 "Dictionaries and Sets") | |||
8 | W 7/17 | file input/output | TEXT (CH.5 "Files and Exceptions I", 14.1-14.2 "More Details on Files" and "CSV FIles") |
modules | |||
9 | M 7/22 | exceptions | LANG (4.2 Exceptions, 7.8 raise statement) |
10 | W 7/24 | recursion | TEXT (Ch.16, "Recursion") |
11 | M 7/29 | basics of object oriented programming | TEXT (Ch. 11.1-11.2 OO Programming, 11.7 "Python and OOP") |
TEXT (Ch. 11.3-11.6, classes and objects in Python) | |||
12 | W 7/31 | classes: creation, usage | |
(finish up topics; review for final) | |||
13 | M 8/5 | finish up any remaining topics | |
review for final | |||
14 | W 8/7 | FINAL EXAM |