[Skip Navigation] [CSUSB] / [CNS] / [CSE] / [R J Botting] / [CSE201] / syllabus
[Text Version] [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]
Labs: [01] [02] [03] [04] [05] [06] [07] [08] [09] [10]
Tue Mar 26 12:13:14 PDT 2013


    Tentative Syllabus CSE201 Spring 2013

      Note -- this is a tentative syllabus

      I have been teaching programming (CSE201) to students very much like yourself since the 1970's. I have done my best to use this experience to describe what is expected of you in this class. But I may have got some details wrong or be forced to change them. The most likely cause for a change is a natural disaster or emergency. I will post any changes (and other news) to the course web site [ http://cse.csusb.edu/dick/cs201/ ] as soon as I can. Make it a habit to check it to see the latest events for this course.

      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 and Engineering 121 and 125. (CSE 201 = CAN CSCI22) (4 units)

      If you have never programmed before you may be surprised by how hard software development is. It is not a topic that you can learn by taking notes. It involves logic and creativity. It involves understanding the computer and its software. You have to practice solving problems. You have to express these solutions in a form (a program) that a computer can follow. You then do experiments that test your computerized solutions. This means finding mistakes you have made and fixing them. Software development is challenging. I hope you enjoy it. If it was simple -- we would program a computer to do it for us.

      Rules and Information

      1. Generic syllabus [ ../syllabus.html ] (handed out in class but may change)
      2. Classes and Labs
        • Class: Tuesday and Thursday 10-11:15am
        • Lab: Tuesday 11:30-1:20pm
      3. Schedule [ schedule.html ] (Handed out but may change)

      Ten Reasons for Taking CSE201

      1. It teaches skills and attitudes that are useful in many careers.
      2. You want to use computers to solve novel problems and help people.
      3. C++ programmers earn more money.
      4. After C++ other languages are easier.
      5. You like using logic and intuition to solve problems.
      6. You need a CS degree or certificate or your Major requires CSE201.
      7. You like fixing things (debugging).
      8. You like mastering detailed rules (Syntax and Semantics).
      9. You need faster programs than you can get from Visual BASIC, Mathematica, or Maple.
      10. You will learn things that Microsoft and Apple do not want to tell you.


      This is the first required class in just about every qualification the School of Computer Science and Engineering 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 learn to analyze problems and break down solutions into step-by-step recipes that a machine can follow. We will study a methodical ways of solving problems using computers: analysis, design, coding, and testing. At the end of the course you will be able to solve problems that can be expressed simply in languages like C++.

      Work (300 points max 60%)

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

        Assigned Reading (40 points 8%)

        You will study parts of the required text before each class (see schedule).

        Since there was no (0) reading set for the first class, you have all done the first piece of assigned work and will get 2 points credit. From now on you will need to study the required text to earn points.

        You need a copy of the required text for this course. In Spring 2013 this is: "Big C++", 2nd Edition, by Cay Horstmann and Timothy Budd, pub: John Wiley & Sons, ISBN 978-0-470-38328-5. It should be in the book store. Used copies should be OK, but do not buy older editions. We will cover the first 6 chapters. Most of the rest of the book is covered in CSE202. If you are not continuing to CSE202 it may pay you to rent rather than buy the text.

        All the readings have been assigned. The assigned readings for CSE201 are listed in the [ schedule.html ] with details in the notes for each class.

        I will finish each class by introducing the assigned reading.

        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. Use the study guide to study the assigned pages in the text. Make notes as you read. Jot down your questions and doubts. 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.

        The detailed study guide includes a list of relevant review questions. Do as many of these as you have time available. Take a piece of paper and print your name on it in the top right hand corner. Write one(1) of the Review questions and your answer. Bring it to class and place it on my desk. I will grade it as soon as I can and return it to you.

        If there are no relevant review questions in the online study guide, write down one question you want to ask on what we have covered and I will get the answers back to you as quickly as I can.

        This work earns 2 points * 20 = 40 points total(max).

        If you can't make it to class , use the [ contact.html ] form to send me your name, question, and answer.

        Class work -- (40 points 8%)

        You will work on exercises, review questions, etc. in class. I will answer your questions and give (short) lectures and demonstrations on some topics. Attending and working in classes is a vital contributor to you getting a good grade. I can not help you if you are not here. Late work or leaving early can only earn partial credit.

        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 two class exercises.

        8 Quizzes (96 points max 18.6% )

        There will be 8 quizzes (dates in [ schedule.html ] ) each worth 12 points max on recent assigned reading, classes, labs, and projects. A typical question will ask you to complete or correct a C++ program or to predict what it does. I expect you to master grammatically perfect C++ and English because computers can not handle bad syntax. There will often be questions on the project you have just submitted for grading. There may be questions on recent labs as well.

        Quizzes contribute a maximum of 96 points to the course total.

        Laboratory work (100 points, 20%)

        There will be 10 laboratories. Most will have roughly 2 hours work to be attempted. However, the first lab is usually finished early.

        The grade will depend on how much work you have done at the end of the laboratory, plus how well it is done. Again see [ schedule.html ] for dates and the web site links for details. Note: I may be revising the labs up to the start of class before the lab.

        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 your Email).

        9 Projects (45 points, 9%)

        You will be developing 9 programs from programming projects mentioned in the text. Every programming project is a learning experience. you must start by taking note of what the book specifies, and finish when your code reflects the requirements. Each is worth a maximum of 5 points when delivered on time and done to the required standard. See [ schedule.html ] for the deadlines and [ projects.html ] for the detailed deliverables for each iteration/page.

        After you hand in a project you may also have to answer quiz questions on the work you've just handeed in.

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

        Warning 2 -- I also use quizzes to check to see if you are familiar with the work you've just handed in.

        Independent Lab Work is the best way to avoid getting confused and learn how computers and programs work. Don't just read code, also input it and compile it. Try out your ideas in the labs. The more time you spend working with code on our lab machines the better you will do.

        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.

        Debugging is like a "Crime Scene Investigation" -- with less sticky stuff. The time spent debugging is reduced, if you work out a detailed design before you start and follow the books advice. 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 CSE 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.

        Notice the deadlines. I want to see how far you got in the allotted time. You will loose all the points if the work is late and you have no documented excuse. All programmers feel that their project would greatly improved if they had a few more hours/minutes/days/ etc.. The projects are time boxed: how far can you get in the allotted time?

        Good programs don't just work. Good programs are easy to understand and change. So they should start with a description of who you are and what you are trying to do. They should have the number of the project in the book and a copy of the specification in the book.

        More, Style is important. Follow the books style hints. Aim for the simplest thing that can possibly work written in the clearest way you can imagine. The best way to learn style is to write something and be given advice on what you've written.

      Bonus course work

      You can earn 5 make up points by attending a CSE seminar [ ../seminar/ ] and emailing me a report of what the seminar was about and who presented it within 24 hours of the end of the seminar. A single paragraph that says who presented and what they talked about plus your own thoughts will earn you credit if it matches what was said in the seminar.

      Course Work is less than or equal to 300 points out of 500

      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 and need a calculator.
      4. You may not use any form of computer, cell phone, or wireless device.
      5. A missing answer scores the same as a wrong answer.
      6. Show your working. I give partial credit for incomplete answers.


      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 Coyote Email and my CSE201 WWW site several times each week. However, browsing off topic may not help you do well in this class.

    . . . . . . . . . ( end of section Tentative Syllabus CSE201 Spring 2013) <<Contents | End>>


  1. Algorithm::=A precise description of a series of steps to attain a goal, [ Algorithm ] (Wikipedia).
  2. Class::=A description of a type of object that includes the data it knows and the functions it can execute.
  3. Function::programming=A selfcontained and named piece of program that knows how to do something.
  4. Gnu::="Gnu's Not Unix", a long running open source project that supplies a very popular and free C++ compiler.
  5. OOP::="Object-Oriented Programming", Current paradigm for programming.
  6. Semantics::=Rules determining the meaning of correct statements in a language.
  7. SP::="Structured Programming", a previous paradigm for programming.
  8. Syntax::=The rules determining the correctness and structure of statements in a language, grammar.
  9. Q::software="A program I wrote to make software easier to develop",
  10. TBA::="To Be Announced", something I should do.
  11. TBD::="To Be Done", something you have to do.
  12. UML::="Unified Modeling Language", industry standard design and documentation diagrams.
  13. void::C++Keyword="Indicates a function that has no return value".

( End of document ) <<Contents | Top