Syllabus
Welcome to CS 102. In this course, you will learn to program computers, using primarily the ‘C/C++’ language family. Although this is an older language, it is still tremendously useful, and many of the skills we learn will transcend the language itself. Programming can be difficult to learn, but as your skills develop with effort and practice, you'll find it can be great fun, and rewarding too!
Table of Contents
1 Essential information
- when
- Tuesday, Thursday 6–7:50 PM
- where
- LLC 234C (IT Lab)
- who
- Prof. Christopher League, Ph.D.
-
christopher.league@liu.edu
– please include ‘CS102’ in subject. - IM
-
chrysleague
(AIM),league@contrapunctus.net
(MSN),cleague@gmail.com
(GTalk/XMPP),chrisleague
(Skype) - phone
- 718 488 1274 – but email is far better than voice mail if I'm unavailable.
- hours
- Monday, Wednesday 11–12; Tuesday 5–6; other times by appointment.
- web
- https://liucs.net/cs102s11/
- text
- A First Book of ANSI C by Gary J. Bronson, 4th edition, ISBN 1-4188-3556-0
2 Course description
The official description, from the course bulletin:
Problem solving, algorithmic design, and implementation using the C++ programming language are presented. Topics include fundamental data types and associated array types, I/O processing, conditional and loop constructs, use and implementation of functions. A brief overview of structures is given. Throughout the course, good programming styles and sound program construction are emphasized.
3 Course learning objectives
Upon completion of the course, students should be able to…
- demonstrate proficiency in basic algorithms and data structures (1.1, introductory level).
- understand the mathematical and logical foundations of computing (1.2, introductory level).
- understand the role of programming languages in software architecture (2.1, introductory level).
- use tools such as a compiler, editor, and development environment (2.2, introductory level).
- work with simple data models in a programming language (3.2, introductory level).
- exhibit awareness of professional organizations and technical opportunities (5.1, introductory level).
- productively attend seminars and workshops outside of class work (5.2, practicing level).
4 Requirements
Your grade will be computed based on assignments, exams, quizzes, and participation. There are a total of 1,000 points available, broken down as follows:
- There will be 12 assignments during the semester (roughly one per week). Assignments are worth 60 points each, but I will drop the lowest two scores so only 10 will count, for a total of 600 points.
- There are 8 quizzes scheduled throughout the semester, to make sure you are following along and reviewing your notes after each meeting. Quizzes are worth 30 points each, but I will drop the lowest two scores so only 6 will count, for a total of 180 points.
- There will be a midterm and final exam, worth 100 points each for a total of 200 points.
- The remaining 20 points are for your attendance and participation in class.
You can track the scores you receive by logging in to the web site. On the 1,000-point scale, you can expect the following letter grades:
≥ 870: | B+ | ≥ 770: | C+ | ≥ 670: | D+ | ||
≥ 930: | A | ≥ 830: | B | ≥ 730: | C | ≥ 600: | D |
≥ 900: | A– | ≥ 800: | B– | ≥ 700: | C– | else: | F |
In the end, I may choose to adjust the scale slightly to compensate for assignments or questions that turned out to be trickier than I intended. Such adjustments would never lower your grade from what is designated in the above table; if you get 930 points, you are guaranteed an A.
5 Policies
No late assignments will be accepted, because we will go over the solutions in class the day each assignment is due. This helps to ensure that everyone receives timely feedback, and that you can learn from mistakes while they are still fresh in your mind. If you are late to class, you must hand in your assignment as you enter the room. If you miss class, you must email your solutions to me before the end of the class period. Since I will drop the lowest assignment score, however, this allows you to recover from screwing up… once!
Showing up on time to class every week is extremely important. If you must be absent or more than 5 minutes late, please try to notify me in advance. I will be keeping track of whether you are in class, and when you arrive. A few missed classes will not count against you, but habitual absence will significantly hurt your grade. Additionally, there will be no make-up quizzes. I do not distinguish between `excused' and `unexcused' absence. Unless you miss an exam due to a severe medical emergency, I don't want to see a doctor's note. If you do miss an exam, the make-up exam will be different—and probably not easier.
There will be no extra credit. Students usually ask for extra credit late in the semester after they have already messed up their original opportunities. Dropping one assignment grade will allow you to recover from minor trouble, but otherwise just be sure to do the work as it is assigned. Extra credit just creates extra work for me, and is unfair to students who don't seek it, because they are missing the opportunity.
You may consult with other students or resources on the basic approach to an assignment, but all work you submit must be your own. Where appropriate, you may quote other sources, but be sure to cite the source, make it clear which ideas and text are from that source, and which are your own. A response to a question that is quoted entirely from some web page will not be acceptable. It is usually obvious when a student plagiarizes. If you found it on the Internet, I can find it too.
If you feel you may need an accommodation for any type of disability, I am happy to discuss that. Please send me an email, or make an appointment to see me.
6 Supplementary time commitment
This is a lab course, for which you will have to spend a significant amount of time both inside and outside of class to succeed. In addition to spending about 1–2 hours preparing (reading, reviewing, practicing) for each hour of class time, your work on the assignments is a crucial part of the learning experience. Some time will be set aside in class for supervised work on the assignments, but it will not be sufficient.
The productivity of computer programmers varies widely, depending on the project and skill level, by a factor of ten or more. (In other words, the most productive programmer can accomplish the same task in one-tenth the time taken by the least productive programmer.) This factor comes from studies are of professional programmers; for beginners, the effect is probably multiplied even further.
For this reason, I am reluctant to estimate the number of hours a ‘typical’ student will need to spend on each assignment. However, the state of New York requires it, so here we go. On average, expect to spend 5 hours per assignment (keeping in mind that earlier assignments will require less time than later ones), or a total of 60 hours per semester. You may find you need less time, or you may find you need spend substantially more time, in order to achieve the educational goal. So please don't get discouraged if you find yourself working even more than this. With practice, you will get there. Nothing worth doing is easy.
7 Schedule
Here is the schedule of topics, quizzes, due dates, and readings (the symbol ‘§’ indicates the section numbers in the book). Assignments are due at 1:00 AM on the date given (basically, the night before). This way I have a chance to evaluate your assignments during the day and give you feedback in class that evening.
- Meeting 1 — read §2.1–2.2
Introduction, motivation, tools, identifiers,main
, andprintf
. Hello, world! - Meeting 2 — Assignment 1 due — read §2.3–2.5
Integer and floating-point data types, arithmetic operations, variable declaration and initialization. - Meeting 3 — Quiz 1 — read §2.6–2.7, 3.1
Practice with all of the above, interpreting error messages, and assignment. - Meeting 4 — Assignment 2 due — read §3.3–3.5, 3.7
More on assignment, Input/output, and constants. - Meeting 5 — read §4.1–4.2
Boolean expressions, logical operators,if
, andelse
. - Meeting 6 — Assignment 3 due — read §4.3–4.4
Nested conditional statements, theif/else
chain andswitch
. - Meeting 7 — Quiz 2 — read §4.5
Practice with conditionals. - Meeting 8 — Assignment 4 due — read §4.6, 4.8
More practice with compiler errors, testing and debugging. - Meeting 9 — read §5.1–5.2
Basic loop structures: counter-controlled, condition-controlled, and thewhile
syntax. - Meeting 10 — Assignment 5 due — Quiz 3 — read §5.3
Computations using awhile
loop. A look atbreak
andcontinue
. - No meeting
Follow your Monday schedule today. - Meeting 11 — Assignment 6 due — read §5.4
Thefor
statement. - Meeting 12 — Quiz 4 — read §5.5
Practice with loop programming. - Meeting 13 — Assignment 7 due — read §5.6
More practice and nested loops. - Meeting 14 — read §5.7–5.8
Even more loops:do/while
- Meeting 15 — Midterm exam
The quizzes will be representative of the sorts of questions on the exam. - No meeting
Spring break. - No meeting
Spring break. - Meeting 16 — read §6.1
Function and parameter declarations. - Meeting 17 — Assignment 8 due — read §6.2–6.3
Practice with functions and return values. - Meeting 18 — Quiz 5 — read §6.4–6.5
Practice with standard library functions. - Meeting 19 — Assignment 9 due — read §7.1–7.2
Variable scope and storage class. - Meeting 20 — Quiz 6
Pass by reference (the C++ way). - Meeting 21 — read §7.5–7.6
Recursion. - Meeting 22 — Assignment 10 due — read §8.1–8.2
Array concept and initialization. - Meeting 23 — Quiz 7 — read §8.3–8.4
Practice with arrays as function arguments. - Meeting 24 — read §8.5–8.6
Two-dimensional arrays and more practice. - Meeting 25 — Assignment 11 due — read §8.8
Searching and sorting algorithms. - Meeting 26 — Quiz 8 — read §9.1
Strings are arrays too. - Meeting 27 — read §9.2–9.3
Practice with string library. - Meeting 28 — Assignment 12 due — read §9.4–9.6
More practice with strings and arrays. - Final exam – to be announced.