Skip to main contentCal State San Bernardino / [CNS] / [Comp Sci Dept] / [R J Botting] / [CSci320] [Search ]
[Schedule] [Syllabi] [Text] [Labs] [Projects] [Resources] [Grading] [Contact]
Sessions: [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20]
spring.syllabus.html (HTML) [spring.syllabus.txt(Text)] Tue Mar 20 13:36:53 PDT 2007
Opening the PDF files on this page may require you to download Adobe Reader or an equivalent viewer (GhostScript).


    CS320 Syllabus

      10 Reasons People Take this Class


      Ideally you have got a C or better in CS202 or an equivalent class. You may find this class very hard to do unless you have done two quarters or one semester of programming in a high level structured or object-oriented language like Ada, C, C++, Java, or Pascal. The labs are easier if you already use the Linux OS.


      You will acquire knowledge of procedural, functional, logic and object-oriented programming languages. In addition, you will learn about markup, meta, and modeling languages. You should learn about the fundamental concepts of lexical and syntactic structure, semantics and logic behind formal languages in general, and programming languages in particular. Finally you will have a chance to practice analyzing problems and designing solutions using the UML with group work as expected in the computing professions.


      Reading! Reading! Plus writing (in English). The work and the final depend on learning what is in the text, on the web, and handed out.


      We will study all the chapters in the [ Required Text ] book plus handouts and pages on the WWW.

      (Required Text): You need the 7th edition of Robert W Sebesta's book "Concepts of Programming Languages", published by Addison Wesley -- ISBN 0-321-33025-0. This is in the bookstore. You may be able to get away with using the 6th edition for most of the course but I can not rule out subtle changes. Avoid editions before the 6th. In the past, there was a cheaper paperback edition that was not sold in bookstores in the USA. It had the same content but was on cheap paper and in black-and-white.

      As soon as possible, you must find the CSci320 page: [ ] Visit this four or more times each week.


      A maximum of 300 points are assigned to continuous assessment during the quarter and a maximum of 200 points to the comprehensive final examination. Continuous assessment includes: participating in classes (20 points), assigned work (54 points), project work (45 points) and laboratory work (200 points). This includes 19 points of padding to cover undocumented emergencies before the final. Bonus points make up for points lost during the course not in the final.

      Assigned Work: 54 points

      Find and study the assigned reading (see schedule and web pages). At the start of each class (except the first and last) you will hand in some review questions with answers from the ends of the chapters and/or handouts assigned for that class. You may use these questions+answers as a memory aid in the final examination. The first three will be corrected, graded (1 point each, 3 points max), and handed back as fast as I can do it.

      It helps if you form a study group to do the assigned work. If you do this, each member of the group must hand in answers to different questions. Once corrected and graded you can merge them to create the notes you use in the final.

      Class Work: 20 points

      You need to be present and ready to do exercises based on the assigned reading at the start of each lecture/discussion. You earn one point for being present and active from the start of the class until dismissed. This work includes practicing final questions.

      Lab work: 200 points

      Each laboratory is worth 10 points. The precise work will be published on the web shortly before the start of class on that day. In each lab you will be: (1) viewing and downloading relevant pages and files. (2) Compiling and testing code in C++, C, Java, LISP, Prolog, etc. (3) drawing UML diagrams, (4) publishing your laboratory report in HTML on our student projects web site.

      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. It is, also, common for the initial set up of student web sites to be less than 100% perfect, making it difficult to start the work. If our systems or your account are not working I stretch due dates/times to include the downtime.

      I tend to grade lab pages holistically based on completeness, content, and correctness at the end of the lab period (normally). I expect to see 3 links to examples of code and some comments on each one. Points will be lost for unreadable pages, bad English, bad links, bad code, or bad HTML. Notice: You will have to work hard to avoid simple mistakes that lose points. Check all links! Spell check your pages. Gratuitous movies, and audio will add nothing.

      Since the WWW is public, your lab work may be shared with the class as part of a lecture/discussion. They may also be used in accreditation plus open houses, and other department events.

      Project: 45 points.

      You will complete an Object-Oriented Analysis and Design project. This means (1) describing in English a new language, (2) giving examples of code in the language, (3) describing the syntax using EBNF/XBNF, and (4) drawing diagrams in the UML. You will be working in a team. No debugging should be needed. You will be given a draft specification for a programming language.

      In the 4th class session I will be handing out some notes on the notation you will be using plus a rough draft of a Language Reference Manual (LRM) for a programming language. Your task is to improve it. At the start of the 7th class hand in a first iteration of phase 1. Hand in an UML model of the language as given plus some proposed improvements to the documentation and/or the language including a new name, examples, and comments (10 points). You will probably resubmit this at the start of the 12th class of the quarter. At the start of the 16th class you hand in a revised set of BNF and UML diagrams for your improved language (10 points). During class 20 your group will present the changes you have made using BNF and UML (10 points). You will hand in hard copy of the LRM to me before the end of the last office hour before the final exam for this class. The final LRM must have: syntax in BNF, semantics in the UML, commentary, and examples ( 15 points). All reports & presentations should describe the language in English and give examples. Some must also define the syntax and semantics using EBNF/XBNF and UML. The table shows the points given to the different parts during the project.
      Phase 13*3*04
      Phase 22*2*33
      Present 2*2*3*3*
      * new ideas only.

      To share in the points earned by your team in the presentations you must take part in some obvious way. Note: Questions in the Final examination will also test to see if you participated in your team's project.

      Ultimate Deadline

      All work has to be shown or handed in before the start of the final exam.

      Comprehensive Final 200 points

      I used the class work, review questions, lab work, and projects as a source for creating questions in the final. There will be long-answer questions based on each chapter, class work, lab work, and projects. You may use copies of assigned work but no handouts, class notes, projects, books, wireless devices, or computers. I recycle parts of final questions into the class work. [ template.pdf ]

      Repeating Students

      If you are repeating this class, come and talk to me (before the last day to drop!) about carrying over any scores to this quarter.

      Distance Learning?

      If you are unable to attend a class session, use the [Contact] link at the top of my CS320 pages to send me the assigned work and answers to at least 3 of the class work questions linked to the web page for the session. This should be sent before the start of the next class.


      The following definitions use XBNF.
    1. BNF::="Backus-Naur Form", expresses syntax and grammar developed by Backus and Naur.
    2. EBNF::="Extended " BNF.
    3. HTML::= "HyperText Markup Language", used on the WWW.
    4. HTML_page::= "<HTML>" head body. Details on head and body in a later handout.
    5. Java::="An " OO " Language from Sun".
    6. LISP::= "LISt Processing Language".
    7. LRM::="Language Reference Manual".
    8. OO::="Object-Oriented".
    9. OOAD::=OO "Analysis and Design".
    10. Prolog::="Programming in Logic".
    11. UML::="Unified Modeling Language".
    12. URL::=Universal_Resource_Locator,
    13. Universal_Resource_Locator::= protocol ":" location,
    14. protocol::= "http" | "ftp" | "mailto" | ... ,
    15. location::= O( "//" host) O(pathname).
    16. WWW::="World Wide Web".
    17. XBNF::="eXtreme" BNF, developed by the teacher from EBNF. Details in a later handout.

    . . . . . . . . . ( end of section CS320 Syllabus) <<Contents | End>>

    Preparation for the Next Class

    1. Study the schedule and syllabus. Can you spot any ambiguities or errors? Program your PDA! It can be embarrassing to be out of step in this class. It can also lose points.

    2. Read and laugh at the "Consumers Guide to Programming Languages" in "Lab 01" below.

    3. Study chapter 1 the text book.

    4. Do the Review Questions from the end of chapter 1 (pages 33-34). Ignore the Problem Set.

    5. Prepare readable written questions+answers to 3 (or more) Review Questions . Include the question and the answer.

    6. Bring your own written questions+answers to the next class. I give 1 point per question+answer up to a maximum of 3 points. Your graded and corrected questions and answers can be used in the final.

    . . . . . . . . . ( end of section Preparation for the Next Class) <<Contents | End>>

    Lab 01


      1. To have logged in and used our Linux Lab computers.
      2. To have found and looked at the CS320 WWW site.

      Normal Scenario

      1. Log in as usual. Start Firefox or Konqueror. Input this URL in the location box: [ ]
      2. Try most of the links at the top of the page.... where do they go?
      3. Try the Search engine. Can you find "Lab 01"?
      4. Visit the Computer Science Club [ ] and it's forums [ forums ] (note: I'll give credit in this class to you if your posts on the cs201/202 forum helps them)
      5. Follow this link [ consumers.html ] to some joke definitions of languages and print out copies to read later.
      6. Check out the preparation for the next class [ 02.html ]


      Due At the end of the laboratory period. Grading: D=worked hard but got nowhere(7/10),..., A=100% successful completion (10/10).

      Alternative Scenarios

        5a If you have some time spare:

        Go to this page [ lab/01.cpp ] and a download a copy (File.... Save as.... Source). Compile and run it.

        1a If you don't have an account

        1. Fill in the form asking for one.
        2. In the lab, sit with someone who does have an account.
        3. Learn by watching them, asking questions, and taking notes. You may need to study the recommended UNIX books for CS201 or CS202.
        4. Wait for your account to be created (typically 48 hours) and then do the lab.
        5. Show me when done, to get the points.

        1b If your CSCI account doesn't work

        1. Fill in the form reporting the problem and hand it to the technicians or EMail
        2. Tell me!
        3. Show me when you've got on line and done the lab, to get the points.

      . . . . . . . . . ( end of section Alternative Scenarios) <<Contents | End>>

    . . . . . . . . . ( end of section Lab 01) <<Contents | End>>