[Skip Navigation] [CSUSB] / [CNS] / [Comp Sci Dept] / [R J Botting] / [CSci201] / syllabus
[Syllabus] [Schedule] [Glossary] [Labs] [Projects] [Resources] [Grading] [Contact] [Search ]
Notes: [01] [02] [03] [04] [05] [06] [07] [08] [09] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20]
Podcasts: [01] [02]
Labs: [01]
Wed Jan 2 15:27:18 PST 2008

Contents


    Preliminary Syllabus CSCI201 Fall 2007

      Note -- this is a preliminary syllabus

      I have been teaching programming (CS201) to students very much like yourself since the 1970's, but I may have got some details wrong in this syllabus and be forced to change them. This quarter, in particular, we had to change the text book just before the holidays and so reesign everything. This increases the risk of a late course correction.

      Catalog Entry 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, some prior computer programming experience, or Computer Science 121 and 125. (CSCI 201 = CAN CSCI22) (4 units)

      Also see [ abet.html ] (the description of CS201 submitted to the Accreditation Board).

      Rules and Information

    1. Generic syllabus [ ../syllabus.html ]
    2. Classes and Labs
      • Class: Tuesday and Thursday 12-13:15 TC002
      • Lab: Tuesday 13:30-15:20 JBH359
    3. Schedule [ schedule.html ]

      Ten Reasons for Taking CSCI201

      • It teaches skills and attitudes that are useful in many careers.
      • You want to use computers to solve novel problems.
      • C++ programmers earn more money.
      • You like using logic and intuition to solve problems.
      • You need a CS degree or certificate.
      • Your Major requires CS201.
      • You like fixing things (debugging).
      • You like mastering detailed rules (syntax).
      • You need faster programs than you can get from Visual BASIC, Mathematica, or Maple.
      • UNIX users know things that Microsoft doesn't tell you.

      Question -- Why do you want or need to take this class?

      Goals

      This is the first required class in just about every qualification the department of Computer Science offers: BS Computer Science, BAs, Bioinformatics, Computer Engineering, Minor in Computer Science, and the certificate in Systems Admin. It is about creating your own solutions to problems. You will leanr to analyse problems and break down solutions into step-by-step recipes that a machine can follow. We will study a methodical way of solving problems using computers: analysis, design, algorithm, code, and testing. At the end of the course you will be able to solve problems that can be expressed simply in languages like C++.

      Question -- What problems would you like to solve?

      Work (300 points max 60%)

        The work involves reading, thinking, writing, correcting your mistakes, and problem solving.

        Assigned Reading (19 points 0.38%)

        You will study parts of the textbook before each class (see schedule below and on the WWW). You need a copy of the required text for this class. In Winter 2008 this will be: "C++ from the Beginning" by Jan Skansholm, Addison-Wesley, 2nd Edn., ISBN 0-204-72168-6 It should be in the book store. Used copies should be OK, but do not buy older editions.

        We will cover the first 8 chapters. The assigned readings are in the [ schedule.html ] for CS201. The rest of the book is covered in CS202.

        Prepare for each class by studying the assigned reading. Start by looking at the contents of the web page for the class. It should contain a study guide. I hope to also include an audio podcast link summarizing the study guide. Use these guides to study the assigned pages in the text. Make notes as you read. THINK! Try examples out on the computers (if you have time).

        Go back to the web page and see if your questions have been answered there. Take a piece of paper and print your name on it, and write one question about your reading. Bring this sheet of paper to class and hand it in. It can be a question you need to have answered to understand the reading, or it might be (given you understand it perfectly) be a question that you think someone else might need answered. I will answer your question in class and/or on the web page.

        In the last class bring in a question on anything we have done that you want answered.

        If you can't make it to class , use the [ contact.html ] form to send me your name and question and I will answer it on the web and/or by reply.

        This work earns 1 point * 19 = 19 points total.

        Class work -- (20 points 0.4%)

        You will work on exercises, review questions, etc. in class. I will answer your questions and give (short) lectures and demonstrations on some topics.

        Hand your question (or a blank sheet) with your name to provide evidence that you are there!

        In the first class, hand in a sheet with your name and answers to the two questions above.

        Quizzes (108 points, 21.6%)

        There will be 9 quizzes (dates in [ schedule.html ] ) each worth 12 points max on the assigned reading, recent classes, labs, and projects. A typical question will ask you to write on a piece of paper a an algorithm or program to do something (Example: print your name). Another may give you a program or an algorithm to correct or complete.

        There will often be a question on the project you have just submitted for grading.

        Notice: I expect you to master grammatically perfect C++ because computers can not handle bad syntax.

        Quizzes contribute 12*9 = 108 points (21.6%) to the course total.

        Laboratory work (100 points, 20%)

        There will be 10 laboratories. Each will have roughly 2 hours work to be attempted. The grade will depend on how much work you have done at the end of the laboratory -- as well as how well it is done. Again see [ schedule.html ] for details and times.

        Each laboratory can earn a maximum of 10 points. These will be assigned as a letter grade (A=10/10) at the end of the 2 hour period based on how much work you've done and how well it is done. A D grade(D=7/10) is for working hard the whole period. An F is for not working or not turning up(F=0). Note you can leave early if you are happy with the grade you have earned at that point.

        The work will normally be graded at the end of the lab session by the teacher. However, some students have scheduling conflicts and must have a written agreement of when and how they will submit their work for grading.

        If our systems or your account are not working I stretch due dates/times to include the downtime.

        Once completed you are free to (1) leave early, (2) help others, (3) do project work, (4) try examples in the reading, (5) do your own experiments, or (5) tap into legal and relevant Internet resources (including EMail).

        Project Work (90 points, 18%)

        You will develop five programs, each in two or three iterations. See [ schedule.html ] and [ projects.html ] for details.

        After you hand in a project you may also have to answer a quiz question on the work you've just done and hand in that.

        Warning -- you will get ZERO points if there is evidence that you copied your project work from someone and don't document where you got it.

        Programming requires independent thinking and mastering unfriendly software. It also involves writing something, testing it, and discovering that it is wrong. Sometimes it takes a lot of effort to find and correct a mistake (debugging). Don't be surprised if you spend a lot of time correcting your own mistakes. The process is like a "Crime Scene Investigation" -- with less sticky stuff. The time spent debugging is reduced, if you work out a detailed plan for a program before you start and follow the books advice carefully. Practice reduces the number of mistakes you make -- especially if you keep a log or journal of what you are doing and learning.

        If you get stuck, see me or any faculty. I am happy to comment on any algorithms, data, or programs if you bring a printout of the problematic code and the symptoms. You can send me a copy of the code (in ASCII) including a description of the problem by email. The [ contact.html ] form makes this easy. Note: I'm not a psychic and so I usually need to know what went wrong and see a copy of the source code.

        The other hard lesson is learning to use good style. The best way to learn this is to try and be given advice. You will be able to resubmit each project to get additional points.

        Each submission worth is worth a maximum of 10 points (100 points for course, 20%).

      Final Exam (200 points max, 40%)

      This will be comprehensive and cover the assigned reading, the class work, the laboratories, and your projects. It contributes 200 points (max) or 40% to the grade for the class. You can go into the final with an A and come out with an F if you have forgotten everything. On the other hand if you go in with a D- you could come out with a C.

      Rules for Quizzes and Final


      1. Closed Book.
      2. You may use to a 8><11 inch "cheat sheet" of notes (both sides). Write down things you are likely to forget.
      3. You may use a calculator.
      4. You may not use any form of computer or a wireless device.
      5. A missing answer scores the same as a wrong answer.
      6. Show your working. I give partial credit for incomplete answers.

      Assessment

      Check out my generic [ syllabus.html ] for how I compute the grade for the course. Notice that only 300 points can be carried into the final, and the final does not earn more than 200 points.

      Advice from an Alumna

      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 work in the laboratory at scheduled and unscheduled times. I expect you to check your EMAIL and my CS201 WWW site several times each week. However, browsing off topic may not help you do well in this class.

    Abreviations

  1. Gnu::="Gnu's Not Unix", a long running open source project that supplies a very popular C++ compiler.
  2. KDE::="Kommon Desktop Environment".
  3. TBA::="To Be Announced", something I should do.
  4. TBD::="To Be Done", something you have to do.
  5. UML::="Unified Modeling Language", [ uml.html ] (beginner's introduction to the UML).

End