201 Computer Science I.
Computer software design, implementation, methods and environments using a current high-level language. Survey of computers, application and other areas of computer science. Three hours lecture and two hours activity laboratory. Prerequisites: satisfactory score on the Entry Level Mathematics examination and either some prior computer programming experience or CSci 125. (4 units)
10 Reasons for Taking this class
10. It is useful in many jobs.
9. You want to work "under the hood."
8. C++ programmers earn more money.
7. UNIX users know things that MS doesn't tell you.
6. You like trying to make things work.
5. You need a CS degree or certificate.
4. Your Major requires CS201.
3. You like fixing things (debugging).
2. You like mastering detailed rules (syntax).
1. You need faster programs than you can get from Visual BASIC, Mathematica, or Maple.
Books. You need to buy a copy of the text for this class: "Computing Concepts with C++ Essentials" by Cay Horstmann (in the bookstore). We will cover chapters 1 through 9. You will also need this book for CS202. For the laboratory and project work you need the Owl Book: "Learning the UNIX Operating System" By Peek, Todino, and Strang from the book store.
Work: The work involves reading, thinking, writing, problem solving, and trial-and-error. You will study the textbooks before each class (see schedule below and on the WWW). You will work on exercises, review questions, etc. in class.
Online Work One successful student gives you this advice: "Spend as much time as you can in the laboratories". This means writing and testing code. You will need to do in the laboratory at scheduled and at unscheduled times. I expect you to check your EMAIL (See how in the Owl book) and my CS201WWW site several times each week. Browsing off topic may not help you do well in this class.
Projects You should complete between 3 and 5 programming projects taken from the text book. Programming requires independent thinking, using unfriendly software, testing, and debugging. Don't be surprised if you spend much time correcting your own mistakes. If you get stuck, see me, my lab assistant, the help desk, or any faculty. I am happy to comment on any algorithms, data, or programs if you bring a printout of the problematic code and symptoms. You can send me a copy of the code (in ASCII) including a description of the problem by email.
Exams: Exams will be closed-book with no computers. I will let you use a single "cheat sheet" of notes and a calculator. I may ask you to write correct C++ code. I may ask you to interpret C++ programs. I will test the knowledge and skills developed in class, in labs, in the assigned work, your projects, and from the book. The quizzes will be short. For example I might ask one question: "Write a C++ program that outputs your name." I might ask you to explain how your latest project worked. Or I could set ten fill-in-the-blanks questions.
Laboratories You must enroll in one laboratory section for this class. You must use the computers, manuals, networks, and advice available in that section. The instructions are in the Owl Book and on the World Wide Web(WWW). Once completed you are free to (1) leave early, (2) help others, (3) do assigned work, (4) do your own experiments, or (4) tap into legal and relevant Internet resources.
Quizzes=170 points(34%), Labs=100pts(20%), Projects =30pts(6%), Final=200pts(40%).
Two extra credit projects (20 points max -- 4%) can be submitted.
Quizzes: Each class meeting (except the first two, and the last one) will have a short examination worth a maximum of 10 points. It will refer to recent reading, class work, project you did, and lab work.
Final. There will be a comprehensive final examination. It can earn a maximum of 200 points. This will go back over all the questions, labs, projects, and work that you have done.
Labs: Each lab is worth 10 points. The maximum score for all 10 labs is 100 points. Start by logging in, running Netscape and finding
To get full credit in the class you must complete at least three (3) of the programming projects or programming exercises found at the ends of the following chapters:
Chapter 4 (Decisions),
Chapter 5 (Functions),
Chapter 6 (Iterations),
Chapter 8 (Classes), and
Chapter 9 (Vectors).
You can submit up to 5 programs. The extra ones bank extra credit to make up for points lost elsewhere. You may not submit more than one at a time. Your selections must not be projects used in any laboratories. Pick something simple!
Each is worth a maximum of 10 points. You can only submit one project from each chapter. To earn all 10 points it must be an ASCII program file with comments that state:
Who you are
What you were doing
When you started it
What you started with
What you achieved.
Anonymous work will not be graded. Work that does not come from an identified programming exercise or project in the book will be given 0.
If a project is less than 90% perfect (scoring between 0 and 8 points inclusive) you can resubmit it once more before the Final. The goal is for you to show you can produce good programs that include the following topics: Decisions, Functions, Iterations, Classes, and Vectors.
If you submit hard copy then printout the code, staple the sheets and hand it in -- with no covers.
We will grade your code based on the following criteria
Clearly Correct - Works whatever happens
Readable - Follows style in book. Comments.
Elegant - Less can say more. Simple is Smart.
Use identifiers that make clear what you are thinking. Things that we can't understand will be treated as bugs.
Here is how you submit project work for grading. It is best to hand in hard copy at the start of a class meeting or to the lecturer's office. In anemergency you could send the code (ASCII/Txt) to
with a subject like these
Look for this file on the CS201 web site:
as a starting point. Download and/or save it. Edit in your name. Use it to get started on each project. All the projects in this class can start form this file.
Warning: Do It Yourself
You can ask the teachers for help. Anything that looks like another student's work or a file downloaded from the internet is likely to get a score of zero (0) for plagiarism. We have several tools that spot files copied from the Internet.
As an example, in a recent Comp. Sci. course, one student got some code from his brother at another university and then let six friends copy it and make small changes. Six students handed in six variations of the code. It was a solution to a different problem. They all got zero.
Note. I ask questions in tests and finals about the programs that you have written.
The more time you spend fighting with our system the better. This doesn't mean browsing the WWW! It means forcing the machine to obey you. Focus on inputting, editing, compiling, and testist C++ programs. Experimenting with the options for your windows is excellent. Trying out programs mentioned in the books and looking at their manuals is very good as well.
You can use the labs in the lab section you signed upo for and get help from the lab assistant. You can also go into any open lab. The opening times will be posted in the corridor in JBH 3rd floor. This includes weekends when we can find a mature student to keep an eye on things.
The Second Chapter of the Owl Book describes how you login and work the windows system.
Work at Home
Avoid using all C++ programming systems except the Gnu C++ systems we use. They are free, standard, simple, and powerful.
Do not use any wordprocessors or "Visual" systems to write code. Use a simple editor like the MS Notepad if you must. You can input a lot of text this way, save it to disk and bring it to the lab. The 'mcopy' command on page 81 of the OWL book will copy the file to your UNIX directory. By the way -- I do this so much I call it SneakerNet.
Access our system from via our modems or your favorite ISP. Use the free Windows SSH client at: http://ftp.ssh.com/pub/ssh/. Download and instal the latest SSHWinClient-3.x.x.exe file. Connect it to
The department has a handout for the simple process of connecting a MS Windows computer through our modems and into our network.
Always Seek Knowledge (ASK)
I expect you to come and talk to me or other teachers about projects. You should be careful about talking to other students, however. They do not know enough to give you good advice.
Document It As You Go
Real problems don't have obvious solutions. Whether you know what the code will look like or not add a comment that says what the program must do -- you can copy the description in the book. This may give you an idea. If not think up a special case that you can see how to solve. Use comments to describe the special case and how it case is solved. Make it compile! Add a simple output to see if the algorithm will work -- nothing else. It will probably have errors. This is normal. Declare variables and recompile and test. Add initial values. Test until it runs. Add comments describing an algorithm. Write code implementing the algorithm. Test.
Develop code in small increments. Add one complication. Make the program work again. Rerun the previous tests.
Don't let the sun rise on bad code!
When the current version passes all tests, look for ways to re-factor code -- for example Quality tip 2.5 (page 70).
Stop when you are about to run out of time or when it does every thing that the book asked for.
Ask for Help
Bring hard copies and symptoms to me. Or use Email. Avoid attachments and binaries in Email! For example, to send me the file 'hello.cpp' and tell me what to look for you'd do this in a terminal window:
...$ mail dick yourUserId
Subject: Cs201 Help
This gives me an error on line 2!
You type the underlined parts. You can change the italic-underlined parts.
CS201 Lab 01 Notes