CALIFORNIA STATE UNIVERSITY, CHICODEPARTMENT OF COMPUTER SCIENCE
Syllabus CSCI 15A (Programming and Algorithms) Section 8. Fall 2003
Definitions:Program (N.): A magic spell cast on a computer which turns one’s input into error messages.
Program (V.): An activity similar to banging one’s head against a wall, but with fewer chances for reward.
Times and places: Lecture: MW 4:00 – 5:15 PM Tehama 130 lab: M 10:00 – 10:50 O’Connell 251 Pre-requisites: High school Algebra. Strong computer skills HIGHLY recommended.
Left side of your brain must be fully functional. A lot of patience. Instructor: Jim McElroy
Office: OCNL 219Office Hours: If you forget, see my web-site. Also posted on the office door. Monday -- Friday: 1:00 – 2:00 PM My Office Phone number: 898-
CSCI Office: 898-6442
E-mail: jmcelroy@ecst.csuchico.edu. I have several e-mail addresses, but they all end up at the same place. Please do not send duplicate e-mails to me at different addresses.
Web: www.ecst.csuchico.edu/~jmcelroy Required Materials:Textbook: An Introduction to Object-Oriented Programming With Java, by C. Thomas Wu. © McGraw Hill, 2003 (ISBN: ?). Should be in the bookstore any day. I will keep you posted.
Software: The Java Software Development Kit (SDK) 1.4, available for free on the internet (See the resources page on my web-site). Some sort of simple development environment, such as TextPad, BlueJ, EditPlus, etc. which are available for free on the internet. Currently I recommend TextPad, but will be exploring BlueJ in the first few weeks of the course. Other:The Java API documentation, available for free on the internet. (See the resources page on my web-site). I will expect you to record Unix commands as you learn them in some sort of notebook. (I would recommend a section of your lecture notebook.) You will be expected to bring your notebook to lab, and to write new Unix commands in that area. After a few weeks, if you have a Unix question, I will ask to see your Unix section to see if you already have the answer. If you don’t have the answer recorded yet, I will help you, and expect you to write it down. Recommended Resources, if you need them:Java in a Nutshell, by David Flanagan. © 1999 O’Reilly & Associates, Inc. ISBN 1-56592-487-8 Unix in a Nutshell, 3rd Edition, by Arnold Robbins. © 1999 by O’Reilly & Associates, Inc ISBN 1565924274 Tutors, including the Upsilon Pi Epsilon (UPE) tutors, which are free. I will post a list of available tutors on my web-site. CSCI 15X, which is a one unit course designed to help students in CSCI 15A. This class has not been posted yet on the web, but should open up soon. It will remain open for enrollment several weeks into the semester.
General Topics to be covered: Introduction of software engineering principlesModularity, Encapsulation, Information hidingAbstract data types (ADTs)Object-oriented designIntroduction to Java programmingData types and expressionsArithmetic operators and operationsBranching and looping logicObjects and Classes Methods and their parametersSelections, repetitions, and arraysAn introduction to data structuresGUIs and event handlingSome basic concepts of testing
Goals: By the end of the course, the student will be able to:
· exhibit a disciplined approach to problem solving, algorithm development,
· and object-oriented program design
· write Java code with good style
· write readable, useful documentation to accompany programs
· be comfortable with the software life-cycle
WARNING: This is the CSU Chico computer science “shakedown” course. It is the great grandmother of the entire prerequisite chain for CSCI. This course typically has a 50% failure / dropout rate, regardless of the instructor. To survive this course, you will need to:
1. Show up for lecture every day lecture is given.
2. Show up for labs every day lab is given.
3. Expect to put in 7 – 10 hours a week into this class outside of the class time.
4. Read the book.
5. Study with others (but do not copy work – I’ll catch you).
6. Seek out outside help if needed – tutors,CSCI 15X,etc. I will help you with this.
If you have absolutely no (or very little) experience with computers, I HIGHLY recommend that you take CSCI 14 before taking this course. Many people who need it will not take CSCI 14 because it does not count towards the CSCI degree, and they consider it a waste of time. MOST of those people end up flunking CSCI 15A, taking it over, and wasting that time anyway, in a much more frustrating manner. Computer programming is unlike any other thing you have ever done. It requires a great deal of persistence and patience. It requires extremely logical, almost mechanical thought processes. (You don’t have to think this way all of the time, only while programming.) Once you start getting the knack of it, it can be really fascinating and fun. Until that time it can be extremely frustrating. If, by the end of the course, you find yourself hating computers and computer programming, then it is time to re-evaluate your major, because it only gets more complicated from here. If you like programming, the complications will seem like a fun challenge (like solving a puzzle), but if you don’t like programming, and you don’t like solving puzzles, it will be very hard. Policy on Dropping: I WILL NOT drop students myself, due to the amount of work involved per drop. If you want to drop this course in the first two weeks, you must DO IT YOURSELF. If you just stop showing up without officially dropping, you will have an “F” on your transcripts at the end of the semester. This “F” will follow you around for the next 60 years of your life, and can be avoided by about 10 minutes of work. You do not need my permission to drop in this first two week period (before Sept. 7th). If you want to drop after September 6th, you will need a serious and compelling reason to do so, and will require my permission to drop. Attendance Policy: Due to historically low attendance in CSCI 15A (for all instructors) I will keep roll by passing roll sheets out to the class. You will be asked to sign the roll sheet and pass it along to the next student. At the end of the semester, your attendance will have a direct impact if your grade is on the border. E.g., if you have a B+, if your attendance is good, I will give you an A-. If your attendance is poor (in which case you will probably be trying to get a C- rather than a D) I will not give you any special consideration. Any complaints about lab or test grades will receive much greater attention if I see that you attend regularly. In addition, the instructor uses A LOT of material from lecture notes on the tests. Do not miss the lectures for this reason, or you will get clobbered on the exams (guaranteed). If you do miss a lecture, get the notes from a friend in the class. If you don’t have any friends, get the notes from anyone else in the class. Forging another person’s name on the roll sheet will be considered the same thing as cheating on a test, and will be dealt with just as harshly. (See below). Policy on cheating and plagiarism: Don’t do it. I’m a really nice guy, but this brings out my ugly side because it violates my sense of fairness. I will deal with obvious cheating and plagiarism harshly, including possible expulsion from the University. You are encouraged to study and work with other people, but cheating and plagiarism will not be tolerated in this class. I have an amazing knack at uncovering copied labs and cheating going on during test taking.
Policy on Changing Grades After Final Exam:
If you can offer me proof that I made a mistake in my grading, I will change your grade. Otherwise, I will not do it. If you stand to lose a scholarship, support from your parents, your visa, or will suffer other dire consequences due to a poor grade, YOU better make sure you get a good grade. This is NOT my responsibility. I am drop-dead serious about this. Grading Policy (Subject to minor change) 2 Midterms and Final @ 20% eachLab Assignments: 40%Late Policy on labs: 10% off per week they are late. First Assignment: URGENT: Get an ECST computer account ASAP. Due yesterday. Second Assignment: (Due September 1st). Send e-mail to the instructor. IMPORTANT: Include your name, class name (15A) and section number in the header
The e-mail needs to provide me with the following information: 1. Your name.
2. The class and section you are enrolled in. (This is important because I will be receiving similar assignments from four different classes.) Put this in e-mail subject line also.
3. Your general computer background.
4. Any programming languages you know
5. Courses you have taken and are taking in computer science
6. Computer systems you are familiar with
7. What you would like to get out of this course (knowledge-wise, not grade-wise).
Please “tag” each line of the e-mail. E.g. Name: Jane DoeClass and section: CSCI 15A, Sec. 8General Computer Background: Know how to use MS Windows, MS Office tools. Have played around with some programming on my own.