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!

1 Essential information

when
Tuesday, Thursday 6–7:50 PM
where
LLC 234C (IT Lab)
who
Prof. Christopher League, Ph.D.
email
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
    SCHEDULED: 2011-01-18 Tue
    Introduction, motivation, tools, identifiers, main, and printf. Hello, world!
  • Meeting 2Assignment 1 due — read §2.3–2.5
    SCHEDULED: 2011-01-20 Thu
    Integer and floating-point data types, arithmetic operations, variable declaration and initialization.
  • Meeting 3 — Quiz 1 — read §2.6–2.7, 3.1
    SCHEDULED: 2011-01-25 Tue
    Practice with all of the above, interpreting error messages, and assignment.
  • Meeting 4Assignment 2 due — read §3.3–3.5, 3.7
    SCHEDULED: 2011-01-27 Thu
    More on assignment, Input/output, and constants.
  • Meeting 5 — read §4.1–4.2
    SCHEDULED: 2011-02-01 Tue
    Boolean expressions, logical operators, if, and else.
  • Meeting 6Assignment 3 due — read §4.3–4.4
    SCHEDULED: 2011-02-03 Thu
    Nested conditional statements, the if/else chain and switch.
  • Meeting 7 — Quiz 2 — read §4.5
    SCHEDULED: 2011-02-08 Tue
    Practice with conditionals.
  • Meeting 8Assignment 4 due — read §4.6, 4.8
    SCHEDULED: 2011-02-10 Thu
    More practice with compiler errors, testing and debugging.
  • Meeting 9 — read §5.1–5.2
    SCHEDULED: 2011-02-15 Tue
    Basic loop structures: counter-controlled, condition-controlled, and the while syntax.
  • Meeting 10Assignment 5 due — Quiz 3 — read §5.3
    SCHEDULED: 2011-02-17 Thu
    Computations using a while loop. A look at break and continue.
  • No meeting
    SCHEDULED: 2011-02-22 Tue
    Follow your Monday schedule today.
  • Meeting 11Assignment 6 due — read §5.4
    SCHEDULED: 2011-02-24 Thu
    The for statement.
  • Meeting 12 — Quiz 4 — read §5.5
    SCHEDULED: 2011-03-01 Tue
    Practice with loop programming.
  • Meeting 13Assignment 7 due — read §5.6
    SCHEDULED: 2011-03-03 Thu
    More practice and nested loops.
  • Meeting 14 — read §5.7–5.8
    SCHEDULED: 2011-03-08 Tue
    Even more loops: do/while
  • Meeting 15Midterm exam
    SCHEDULED: 2011-03-10 Thu
    The quizzes will be representative of the sorts of questions on the exam.
  • No meeting
    SCHEDULED: 2011-03-15 Tue
    Spring break.
  • No meeting
    SCHEDULED: 2011-03-17 Thu
    Spring break.
  • Meeting 16 — read §6.1
    SCHEDULED: 2011-03-22 Tue
    Function and parameter declarations.
  • Meeting 17Assignment 8 due — read §6.2–6.3
    SCHEDULED: 2011-03-24 Thu
    Practice with functions and return values.
  • Meeting 18 — Quiz 5 — read §6.4–6.5
    SCHEDULED: 2011-03-29 Tue
    Practice with standard library functions.
  • Meeting 19Assignment 9 due — read §7.1–7.2
    SCHEDULED: 2011-03-31 Thu
    Variable scope and storage class.
  • Meeting 20 — Quiz 6
    SCHEDULED: 2011-04-05 Tue
    Pass by reference (the C++ way).
  • Meeting 21 — read §7.5–7.6
    SCHEDULED: 2011-04-07 Thu
    Recursion.
  • Meeting 22Assignment 10 due — read §8.1–8.2
    SCHEDULED: 2011-04-12 Tue
    Array concept and initialization.
  • Meeting 23 — Quiz 7 — read §8.3–8.4
    SCHEDULED: 2011-04-14 Thu
    Practice with arrays as function arguments.
  • Meeting 24 — read §8.5–8.6
    SCHEDULED: 2011-04-19 Tue
    Two-dimensional arrays and more practice.
  • Meeting 25Assignment 11 due — read §8.8
    SCHEDULED: 2011-04-21 Thu
    Searching and sorting algorithms.
  • Meeting 26 — Quiz 8 — read §9.1
    SCHEDULED: 2011-04-26 Tue
    Strings are arrays too.
  • Meeting 27 — read §9.2–9.3
    SCHEDULED: 2011-04-28 Thu
    Practice with string library.
  • Meeting 28Assignment 12 due — read §9.4–9.6
    SCHEDULED: 2011-05-03 Tue
    More practice with strings and arrays.
  • Final exam – to be announced.