CSC 101: Fundamentals of Computer Science I
Course Syllabus
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
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
I use the electronic version of the book myself.http://www.coursesmart.com/9780136083481?__professorview=false&__instructor=2674520
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.
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.
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.
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.
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.
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.
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
Any documentable instance of cheating will result in failure of the course.http://www.osrr.calpoly.edu
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.
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.
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)