CSC 101 / CPE 101:
Fundamentals of Computer Science 1
PLEASE NOTE THAT THIS SITE MAY EVOLVE AND MAY CHANGE. Check back frequently
for updates and new information.
|
Course Goals |
Textbooks & Software Tools |
Components |
Grades |
Policies |
Course Goals
Course Purpose:
The first in a three-term sequence, this course is an introduction to computer science. It is intended for students who are majoring in computer science, computer engineering, or management information sciences. (This course is not intended for students who wish to "learn to program." It is intended for students who plan to go into the computing field as a professional career.)
Prerequisites
- Definitely required: CPE 100, or CSC 111, or consent of instructor (use the online consent form).
- Strongly recommended: Math 118 and 119 (or the high school equivalent of Pre-Calculus Algebra and Trigonometry). (Note: most students either have taken or are concurrently enrolled in the first Calculus course, Math 141.)
- Although there is no specific programming prerequisite, if you have no previous programming experience, you must identify yourself to your instructor during the first week of class. (Don't just mention this casually: it is preferred that you visit your instructor during scheduled office hours; if that is impossible, you may send email.) Your instructor will discuss with you whether other talents and skills you bring to the class will be adequate to enable you to keep up with your classmates who do have previous programming experience, or whether there are other skills you should learn before embarking on this class.
Main Topics:
- Principles of algorithmic problem solving and software development.
- The uses of object-oriented design, stepwise refinement, and abstraction.
- Introduction to the software development process: requirements specification, complete design, correct and concise implementation, good documentation, and thorough testing.
- Application of the syntax and semantics of a modern programming language (currently, Java): classes, methods, and objects; data types; data structures; expressions; control structures; input/output.
Textbooks and Other Materials
- Textbooks:
- Required: Koffman, Wolz, Problem Solving with Java
(Second Edition). Reading, MA: Addison Wesley.
- Check out the textbook authors' website for additional resources and errata!
- Recommended: Cal Poly's UNIX User Guide from El Corral Publications.
(Note: Get the latest version available. If your copy has any references to IBM AIX, ignore them: they are obsolete. Central Unix (polylog1.calpoly.edu) is now a Hewlett-Packard UX system. OpenMail (not pine) is the standard email system.)
- Diskettes (3.5 inch): It is handy to have one or two of these, labelled with your name, phone number, and email address, and always stored in a protective case, to use for backups. In the lab, you will be able to save temporary files to the local hard drive, which you will back up to your Central Unix account at the end of the session, and download again the next time you want to work on them. Still, routinely making a second backup onto diskette and carrying that with you can be useful at times too.
- Notebook: For this course, I strongly recommend you use a 3-ring binder with divider-tab sectioning and end pockets. While a spiral-bound notebook with inner pockets is acceptable, a 3-ring binder is much more useful for organizing: class notes, class handouts, written problem solutions, team project information, and a journal of software discoveries. In case you accidentally leave it behind somewhere, make sure your name and some combination of your address, phone number, email, and section number are clearly indicated.
- Software: The software we will use in lab consists of the following (note that some of the links in this section initiate the actual software download):
- Tools available for free over the Internet:
- The Java Software Development Kit (JDK/SDK). From Sun Microsystems, it is available for a range of hardware operating systems. Using the PC version available on CD packaged with the textbook will save you considerable time in downloading, but it is freely available from
Sun
(note: 1.3 is the version in the CSc labs as the term begins).
- Since the state of the Macintosh version of the JDK/SDK is currently
in flux, if you can't find a copy at Sun's Java site, then try the one at
Apple instead.
- Programmers File Editor (PFE). PC software created by Alan Phillips of Lancaster University in England. Freely downloadable from Prof. Hitchner's
CSC-101 site. I personally like this file editor to use as a companion to the SDK, but you may use any editor of your choice.
- ZIPCentral. PC software to zip and unzip (compress and decompress) files, to save space during transfer and longer term storage. (If you have another good zip utility already, you may use that outside of class.) Freely downloadable from ZipCentral.
- Look for other PC and Mac software at TUCOWS.
- Tools available to Cal Poly students for free, from Cal Poly's Software Distribution Site (at that page, press "- Select a link --" and then "Software - [for your computer's operating system] "):
- WS_FTP. File Transfer Protocol software for the PC. (If you have another good FTP package already, you may use that outside of class. If you use a different operating system outside of class, you will have to use a different FTP tool; e.g., Fetch is a good one available for the Mac.)
- QVT/Term. Terminal emulation software for the PC. (If you have another good Telnet client package already, you may use that outside of class. If you use a different operating system outside of class, you will have to use a different terminal tool; e.g., BetterTelnet is a good one available for the Mac.)
- Web browser and email package. Basic internet software tools. You may use your favorite ones, but be sure to follow the guidelines for this course and section, which will be reviewed in class.
- Virus Protection. Make sure that you have adequate virus protection tools installed on your computer, and that you use them. That means updating them regularly as well as making sure they are set to run regularly and appropriately.
While it is not required that you obtain and install your own copies of those tools, it is recommended you do so if at all possible: you will have to spend time outside on class on your assignments. You will have access to three
CSc labs (our lab room, 14-303, plus 14-302 and 14-235) when they are not in use by other classes, and to two Cal Poly
public labs (Kennedy Library PC Lab in 35-115c, and Liberal Arts PC Lab, 10-128 during their
public hours) that have the same software installed.
You will also access and use the campus-based Central Unix system for backing up and handing in copies of your work; if necessary, you can compile most of your 101 programs there as well.
- Support: If you have a PC running Windows or NT, you can obtain your own copies of all those tools, or you can use other comparable tools if you prefer (but do use the Sun JDK/SDK specifically, not another Java system, and absolutely not the (non-standard) Microsoft J++ system). If you happen to have your own Mac or Unix machine instead, see me during office hours to discuss the options available to you. No matter what platform you have, however, please recognize that I can only give you a few simple suggestions on software to locate and install. My role is not to serve as your system administrator or personal debugger... In particular, you should contact the Cal Poly Help Desk for assistance with packages that they support. Since your classmates are installing the same tools on their systems, they can often provide you with useful advice or assistance as well.
- Additional information and links will be added gradually, as our term and your needs progress, to the Info, Hints, and FAQs section of your instructor's web site.
Course Components
Readings: Weekly reading assignments are listed on the course schedule. You should always read the textbook in advance of the corresponding lecture.
You may want to re-read sections again after class for deeper understanding, but a thoughtful reading ahead of the lectures will be critical to your success in this class. How much of each week's reading should you do before each session? If possible, read the entire week's material beforehand so you'll know where we are going. If you can't always stay that far ahead, look at the number of chapter sub-sections, and the number of pages, for each week. Divide each by the number of lectures that week (typically, 3), round up in both cases, and read an amount that corresponds to the larger of those two results.
Lectures: Attendance at all lectures is expected. Notify your instructor in advance should you ever need to miss a class.
Be aware that the time allotted for lectures is insufficient to permit thorough coverage of all the reading material. Lectures will address first selected key concepts as well as ideas that some students will likely find difficult. But quizzes and exams will contain questions from the entire reading assignment: both concepts covered in class or lab and concepts from the reading that were not mentioned.
I will often actually "lecture" during lecture sessions (and occasionally, during lab times): to cover a handful of topics from the readings, to present selected examples, and to review common issues from labs, programs, quizzes, and exams. I will answer your questions, either in class or by suggesting we have a more individualized discussion during my office hours. In addition, your active participation is expected: follow the presentation; think about how my comments match, or don't, your own understanding from the readings and exercises you did before class; take notes -- but try to capture the ideas being presented rather taking down words without thinking about them; ask questions as needed; when time is given to work with partners, take advantage of the opportunity provided.
Quizzes: There will be seven quizzes, closed book and open notes, lasting approximately 10-20 minutes each. Normally they will be offered during the lecture hour: if a switch to lab is ever needed, this will be announced in class. The best six (6) of your seven (7) quiz scores will be used in computing your final grade. There will be no make-up for missed quizzes: if you should miss one, your grade will be computed from the six you did take; if you miss more than one, one of those will still be dropped but the other missing ones will be scored as zero (0). So please do not even consider skipping a class just because you think you may not do as well as you'd like on a particular quiz: I will drop your lowest score, no matter what it is, and even if I have to count a low one, a zero will pull your average down more than will even a weak actual score. Note that your quiz grades are a substantial portion of your overall grade.
To prepare for the quizzes, it is recommended that you work on the Self Review Questions, Exercises, and Programming Projects from the textbook: compare your completed answers with those completed by several of your classmates, then see your instructor, preferably in small study groups, to resolve any discrepancies you find after working together.
Team Laboratory Work: Attendance at all labs is expected. Notify your instructor in advance should you ever need to miss a lab. Attendance is particularly important because lab activities will be completed in teams: teams will be assigned by your instructor and may change regularly throughout the term.
Lab assignments will normally be completed during your scheduled lab time; your team is welcome to convene in another facility at another time to do more work in addition to (but not instead of!) that which you have time to complete in the scheduled lab. Unless noted otherwise on the course
schedule,
labs will be due during the last lab session for your section in a given week. Most labs will require that you demonstrate something to me, or to a grader, while in lab; a few will require you to hand in electronic files or printed output before you leave the last lab session. Late labs will not be accepted: you will just have to hand in and/or demonstrate what you have managed to complete by the end of the week.
Occasionally, part of the week's lab time may be devoted to program analysis: in teams, you will write reviews of each other's work and submit those for grading. When this happens, completed reviews will be required from everyone, and will be graded as part of the corresponding programming assignment.
Finishing your lab assignment early does not give you automatic permission to leave early: all members of your team will be expected to look around the lab and see if any other teams could use your assistance, either individually or as a group. (I will often be busy checking off whether other teams have completed their work and may not have time to help yet other teams at that moment!) If no one else needs help, then you may use any remaining lab time to work on your individual programming assignment. If you finish that early too, and there really is no one else who needs help, then you may ask me for permission to leave early.
Labs will be completed as a team, and grades will be assigned accordingly. Why teams? There are several reasons. For one, educational theory indicates that some teamwork is beneficial to all students. Yes, all! All of you will face challenges and all of you will make mistakes, but they'll be different ones for different people. You should be able to help each other out initially, and only have to wait for me when you cannot resolve apparent discrepancies. That should make lab time more productive and less stressful for all of us. For another, employers want people who are already skillful at working in teams so, if you haven't yet figured out how to do so, now is the time to start or, if you have, here's another opportunity to hone those skills.
Examinations: There will be two written examinations:
- A written mid-term exam:
- This will most likely be conducted late in week #5 or early in week #6 (the exact date will be posted on the regular course schedule). It will be closed book and closed notes, but you may bring a single 4 by 6 inch index card with notes (written large enough to be visible to the normal eye).
- A multi-part final exam:
- A 50-minute final programming assignment, in the last week of classes for the term. The rules for this exam are still under consideration, but they will be explained at least a week before it is offered.
- A three-hour comprehensive final examination, to be offered during finals week (the exact date and location will be posted on the regular course schedule). It will cover material from throughout the course, with a slight emphasis on material since the mid-term. Once again, it will be closed book and closed notes, and you may bring a single, readable 4 by 6 card of notes if you want. It will most likely consist of two parts:
- A common final examination, where students from all 101 sections will answer the same questions, and
- A section-specific examination, where your specific instructor will supplement the common questions with others detailing some additional topics that received particular emphasis in our sections.
Note: you must obtain at least 50% on all parts of the final examination (the programming part and the two comprehensive parts), and an overall passing total (60%) on the combination, in order to earn a passing grade for the course.
Individual Programming Assignments: While all your in-class labs will be done as teams, your outside programming assignments must be developed individually. Yes, you may ask the odd simple question or get an occasional brief clarification from a classmate or raise some possibly-common concerns on the class discussion boards, but all the actual design, development, documentation, and testing are to be done as an individual. Any non-trivial discussion or any form of collaboration that should happen to take place must be indicated clearly in the program documentation. Apparent "collaboration" not documented will be treated as plagiarism or other forms of cheating (i.e., as a very serious academic offense).
- Incomplete assignments that are handed in on time will be considered for partial credit. However, both complete and incomplete programs must meet one criterion: they must compile without errors. Any program submitted that does not compile will receive zero (0) points.
Regularly save back-up copies of your programs, especially when you have one that will compile correctly. While accommodation will be made for widespread service disruptions (e.g., city- or campus-wide power outages that could prevent your completing an assignment), recovering from individual file loss or other individual complications are your own responsibility.
Instructor Office Hours: Students are encouraged to take advantage of the instructor's weekly
This is a first-come, first-served operation: no appointment is necessary during official office hours, but I'll do my best to accommodate everyone who shows up during the appointed times. If prioritization should ever be required, the needs of study groups who show up together will be addressed first, while any individuals will be pointed to other resources (e.g., classmates, CSc tutors, Cal Poly help desk personnel) in the short term until my next available time. If you need to talk with me individually (e.g., about a personal issue or a problem with a classmate or team member), it's often good to contact me to set up a private appointment at another time.
Overall:Quizzes and examinations must be taken at the scheduled times. Exceptions will, of course, be made for medical or other serious emergencies, if and only if adequate written documentation is provided at the time you request to schedule the make-up date.
Grading Scheme, finalized in the second week of class.
Assignment Weights |
Labs |
10% |
Lab exam |
10% |
Programs |
10% |
Quizzes |
20% |
Mid-Term Exam |
20% |
Comprehensive Final Exam |
30% |
|
Total |
100% |
|
Notes:
- The quiz grade will be computed from the best six (6) out of seven (7) quiz scores.
- Individual labs, programs, and quiz scores may be computed based on different numbers of total points. Such a process, however, is only for the convenience of the grader. All scores will be converted to percentages before total scores are computed.
|
Issues & Policies
- No food or beverages are permitted in the computer lab! An amnesty area will be provided, far away from the computers, where you may store any foodstuffs you have on hand.
- Show respect and patience for your classmates and instructor. Arrive on time for lectures and labs, quizzes and exams. If you must leave because of an emergency, do so quietly and gracefully. Don't talk among yourselves when anyone is addressing the entire class. Do participate, and speak loudly enough to be heard, when you are called upon and when classroom discussion is called for. Acknowledge the class hand signal when it's time for discussion to stop. Realize that I may have 16 separate teams, or even 35 individual students, waiting for me to review their work, answer a question, or resolve a problem. So please don't add to the pressure by interruptions or other forms of annoyance: just work on something else or with someone else until I can get to you.
- Accept change. Recognize that the printed schedule handed out on the first day is the best estimate I can give at this point in time. It may have to undergo some minor adjustments. Changes will be announced in class. They will also be posted on the online schedule...eventually.
- Life happens. Although I am adamant about attendance and due dates, negotiation is possible if truly warranted. Use mature judgment. If you are ill, and contagious, I'd rather you stay away and recuperate than come in and infect the rest of the class. If there's a family emergency, interview trip, etc., contact me as soon as possible to make alternative arrangements. Realize that I will usually expect documentation (e.g., an MD's letter, a printed obituary, a letter from your prospective employer, etc.), but I will try to be reasonable. I also expect you to let your lab partners know, and for you to negotiate with them how to redistribute the work so you can still contribute your share. Let them and me know as early as possible what is going on: do not expect us to hunt you down.
- Learn the difference between collaboration and cheating. We will go over this to some extent in lab, but use your head as well. Lab assignments are to be done as teams: each person is expected to contribute and no person is to dominate the group. Programming assignments, plus quizzes and exams, are to be done individually: in those contexts collaboration is unauthorized, and therefore considered to be cheating. The skills you are to learn in this course must be learned individually, even if some lab work is done collaboratively, so that, later, each person can be an effective contributor to other team efforts. If you copy from someone else now, you won't learn enough to be able to contribute when needed later on.
- All work must be documented with the author's name. Any material that contains an individual name is presumed to be the work of that individual, and only that individual. Multiple authors must be named on any collaborative work. Any work that appears to be the product of someone not named on the document will be considered to be plagiarism, which is a serious violation.
- The CSc department has software that can compare program files and reliably detect similarities among them. All involved in the submission of suspect programs (i.e., both the copier(s) and the person(s) copied from) will be investigated.
- A first violation will be penalized, at a minimum, with a zero grade for the task. Highly serious first violations, and any subsequent violations, may be handled by the campus Judicial Affairs Office, whose remedies can include being failed in the course or being dismissed from the university. Instructors of later courses in the sequence are informed about students caught cheating in CSC 101.
All students are expected to learn and abide by the university, state, and federal laws regarding the ethical use of computer facilities and intellectual property. See, for example, the
Campus Computing and Communication Policies, the State of California Penal Code Section 502, and the IEEE-CS/ACM Joint Task Force's Software Engineering Code of Ethics and Professional Practice.
Copyright © 2000.
by Carol Scheftic.
All rights reserved. Used by permission.
Portions of this document have been adapted, with permission, from work written by other CSC-101 instructors (e.g., Laurian Chirica, Lew Hitchner, Mark Hutchenreuther, Mei-Ling Liu, Phil Nico, and Erika Rogers).
Requests to reuse information from this page should be directed to Carol Scheftic.
(If I find you are asking to use something I adapted from another author, I'll forward your request as needed.)
Page created 17 September 2000;
last updated
22 June 2001.