CSC 101: Fundamentals of Computer Science I

Course Syllabus




Instructor

Gene Fisher
Office: Building 14, Room 210
Email: gfisher@calpoly.edu
Web page: http://users.csc.calpoly.edu/~gfisher
Phone: (805) 756-2416
Office hours: MWF 2-3PM, Tu 9-11AM


Course Objectives



Textbook and Other Class Materials

The text book is Hanly & Koffman, "Problem Solving and Program Design in C", 6th edition. It is available in hardcopy form at the bookstore. It is available in electronic form from the publisher at


http://www.coursesmart.com/9780136083481?__professorview=false&__instructor=2674520

I use the electronic version of the book myself.

In addition to the text, other course materials are available online in the master class directory at http://users.csc.calpoly.edu/~gfisher/classes/101. Online materials are organized in the following subdirectories:

Most online course material is available in both HTML and PDF formats. Some files with very detailed formatting may only be available as PDF.

Programming Assignments

There will be five programming assignments, due as shown in the class schedule. These programming assignments constitute the main focus of the class in terms of your learning experience. They are worth 32% of your total grade.

Labs and Lab Exercises

There are nine labs. The schedule at the end of the syllabus The labs are held in a room with computers where you will do your work in groups of two people. You may work alone on the labs, if you choose, but having a partner is recommended.

Each week there will be a set of lab exercises assigned for you to work on. For the first couple weeks, the labs will involve familiarizing yourself with the UNIX operating system and a UNIX text editor. Starting in the third week, lab exercises will focus more on programming.

The labs will be graded in-person on the day that they're do. You will demonstrate that your lab works, possibly answer some questions about it, then submit the lab to formalize that you finished it.

Quizzes and Exams

There will be three lab quizzes, two midterms, and one final exam. The lab quizzes will cover some of the basic concepts of computing not directly related to programming and problem solving, e.g., UNIX concepts. Lab quizzes will be twenty to sixty minutes each. The first midterm will be fifty minutes in lecture. The second midterm will be combined with the second lab quize, for a total of 100 minutes; the first half of the midterm/quiz will be in the lecture room, the second half in the lab room. The final will be cumulative. It will be held in the lab room, at the reguarly-scheduled time of 7:10-10:00am on Wednesday 6 June.

Where and When to Turn in Assignments

All of the programs and almost all of the labs and quizzes will be submitted electronically, using the handin program on the CS department UNIX machine "unix1". There may be a quiz or two that involves forms of drawing that would be inconvenient to submit electronically. Those parts of the problems will be submitted on paper. Exact submission details will be given for each assignment.

Late Policy

Assignments must be turned in ON TIME to receive credit. Late assignments will not be accepted.

If you cannot get a program working by the due date, be sure to hand in what ever you have in order to get partial credit. Scoring details for partially- executing programs will be provided for each assignment. Programs that do not compile will receive a score of zero, however much code you may have written.

Grading

The following is a complete point breakdown for all graded items. The percentages are based on 100% of the total grade for the class.

for a grand total of 100%. If you receive 90% or above you are guaranteed an "A" (or "A-") in the course, between 80% and 89% a "B" (or "B-"), between 70% and 79% a "C" (or "C-"), between 60% and 69% and "D" (or "D-"). At the end of the course, the grading curve may be lowered, so that it may be possible to score a lower percentage for a given grade. Under no circumstances will the curve be raised; i.e., 90% or above guarantees an "A", etc.

Lecture and Lab Attendance

Attendance is not required, except on the days of quizzes and exams. As long as you can successfully complete all programming assignments, quizzes, and exams, you may choose to attend the lectures and labs as you see fit. Obviously, your instructor thinks it's a pretty good idea for you to attend.

Limits on Collaboration

Most lab work may be done with a partner. Where explicitly stated in the lab writeup, partners may submit the same work. Note that even if partners have exactly the same solution, both partners must submit work individually to receive credit.

All programs must be done individually. It is OK to discuss general principles and ideas with colleagues, but the programming assignments are not to be done in groups, or with your lab partner.

Use of anyone's solutions other than your own is considered cheating. This includes solutions from previous offerings of this or any other course, solutions you may find online, or solutions you get from any source other than your own brain.

Any instance of cheating or plagiarism will be referred to the campus office of student rights and responsibilities. Campus cheating policies are defined online at


http://www.osrr.calpoly.edu

Any documentable instance of cheating will result in failure of the course.

The CSC department has a computer program that can reliably detect similarities among several student program files. This program will be used on all CSC 101 program submissions.

Computer Accounts

All pre-enrolled members of the class should have an account on the CSC department machines. Your computer user name and password are the same credentials as you use for the Cal Poly portal. If you are pre-enrolled but do not have an account, please let me know on the first day of lab so we can get things taken care of.

If you add the class using an e-permit, your account will be added within a day or two. Please be sure to use your e-permit as soon as you can, so that your computer account will be created.

A VERY IMPORTANT NOTE: If you use a home computer to develop your programs, YOU MUST verify that the program compiles and runs on unix1 before you hand it in. When you submit programs, they will be compiled and executed by a script that runs on unix1. You are responsible to ensure that your programs run the same on unix1 as they do on any other computers you may use to develop the programs.

Choosing a Program Development Environment

You are not required to use any specific program editor or IDE (interactive development environment). The first lab provides an introduction to the Emacs and Vim editors. We will discuss the jGrasp IDE in lab Week 2. The decision of which editor or IDE to use is up to you. I am most familiar with the Emacs editor, and I use it for all my C program development. If you want to take advantage of my expertise, I recommend that you use Emacs, at least to begin with. I am less familiar with Vim, and to be candid, I find Vim to be a vastly inferior editor to Emacs.

I do know and use jGrasp, and I recommend it if you want to use a more graphical development environment than Emacs or Vim. We will discuss jGrasp and other IDEs starting in week 2 labs.

Class Schedule

The following is the class schedule for the quarter. The reading chapters refer to the text book. The schedule is reasonably firm, but some dates may be adjusted if necessary.

Week Lecture Topics Reading Quiz or Exam Assignment Due
1 Intro to the course
Overview of programming
    & problem solving
Chs 1,2    
2 Assignment, arithmetic, I/O
Conditional statements
Simple functions
Chs 3,4   Lab 1 (Mon)
Program 1 (Fri)
3 More on conditionals
More on functions
Chs 4,6   Lab 2 (Mon)
4 Looping Chs 5,6 Lab quiz 1 (Wed)
Midterm 1 (Fri)
Lab 3 (Mon)
Program 2 (Fri)
5 Arrays and strings Chs 8,9   Lab 4 (Wed)
6 More arrays and strings Chs 8,9   Lab 5 (Wed)
7 File I/O
Yet more on arrays, strings, functions
Chs 12,13 Lab quiz 2 (Fri)
Midterm 2 (Fri)
Program 3 (Mon)
Lab 6 (Wed)
8 Structs, unions
Programming in the large
Chs 11,13   Lab 7 (Wed)
9 Pointers
Dynamic allocation
Ch 14   Program 4 (Mon)
Lab 8 (Wed)
10 Recursion
Course review
Ch 10 Lab Quiz 3 (Wed) Lab 9 (Fri)
Finals     Final Exam (Wed) Program 5 (Wed)




index | lectures | handouts | programs | labs | examples | solutions | grades