.Open CS320 Syllabus

. 10 Reasons People Take this Class

10. This class is required in the CSCI BS.

9. You want to be ready for 400+ level CSCI..

8. You need 3+ languages for a Web project.

7. You will need to choose languages for projects.

6. You want to design a better language

5. You are tired of paying for language classes.

4. You want to create a WWW site.

3. You like the quirks of programming languages.

2. You want to study C, C++, Java, HTML, LISP, Prolog, Ada, UML, BNF, etc. in 10 weeks.

1. The teacher:-)

. Pre-Requisites

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 with a high level structured or object-oriented language like Pascal, Ada, C, or C++. The labs are easier if you already use the Linux OS.

. Work

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

. Text: Concepts of Programming Languages by Robert W Sebesta, Published by Addison-Wesley, 6th edition, ISBN 0-321-19362-8. This is in the bookstore. Avoid older editions. We will study all the chapters in this book plus extra handouts and what is on the WWW. As soon as possible you must find the CSci320 page: http://cse.csusb.edu/dick/cs320/

Visit this four or more times each week.

. Grading

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 (80 points), project work (45 points) and laboratory work (200 points). This includes 45 points of padding to cover undocumented emergencies before the final.

. Assigned Work 80 points

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

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 20pts

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: 200pts (20 * 10pts)

Each piece of lab work 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) creating web pages in HTML that contain you notes on the topic being covered. (4) publishing your laboratory report on csci.csusb.edu/public.

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.

The 10 points are divided as follows: Three(3) points for completeness. The content of a lab page is worth 7 points. Three points(3) are for examples of things you worked on, produced, or found (links, documentation, code, applets, etc.) for each lab. Three (3) points for will be given for comments on these items. One (1) point for style. Aim for simple readable WWW pages. This point 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 style points. Check all links! Spell check your pages. Gratuitous graphics, 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 open houses and other dept 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. At the start of the 7th class hand in a first draft 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 3pm on Mar 20th. This will have: BNF, 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 approximate weighting given to the different parts during the project.






Phase 1





Phase 2















* new ideas only.

To share in the points earned by your team in the presentations you must take part in them 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 use 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 plus a special one on the project. You may use copies of assigned work but no handouts, projects, books, wireless devices, or computers.

. 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.

. Glossary

The following definitions use XBNF.

BNF::="Backus-Naur Form", expresses syntax and grammar developed by Backus and Naur.

EBNF::="Extended " BNF.

HTML::= "HyperText Markup Language", used on the WWW.

HTML_page::= "<HTML>" head body.

Java::="An " OO " Language from Sun".

LISP::= "LISt Processing Language".

LRM::="Language Reference Manual".


OOAD::=OO "Analysis and Design".

Prolog::="Programming in Logic".

UML::="Unified Modeling Language".


Universal_Resource_Locator ::= protocol ":" location,

        protocol::= "http" | "ftp" | "mailto" | ... ,

        location::= O( "//" host) O(pathname).

WWW::="World Wide Web".

XBNF::="eXtreme" BNF, developed by the teacher from EBNF.

Preparation for the Next Class

Assigned work due

              (0)    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.


              (1)    Read and laugh at the "Consumers Guide to Programming Languages" handout below.

                       Read and marvel at the risks of using languages like C and C++.


              (2)    Study chapter 1.


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


              (4)    Prepare readable written answers to 4 Review Questions . Include the question and the answer. You can write more answers if you want.


              (5)    Bring your own written answers to the next class. I give1 point per question/answer. Your graded and corrected questions and answers can be used in the final.

Lab 01


(1) To have found and looked at the CS320 WWW site.

(2) To have logged in and used our Linux Lab computers.


(1) Login as usual. Start Netscape. Input this URL in the location box:


(2) Find the instructions for Laboratory 1 on the web site and follow them...

*Note* If you don't have an account

              (a) Fill in the form asking for one.

              (b) In the lab, sit with someone who does have an account.

              (c) Learn by watching them, asking questions, and taking notes.

                       You may need to study the recommended UNIX books for CS201 or CS202.

              (d) Wait for your account to be created (typically 48 hours) and then do the lab.

              (e) Show me when done, to get the points.

*Note* If your CSCI account doesn't work or your web site is not ready...

              (a) Fill in the form reporting the problem and hand it to the technicians or EMail khan@csci.csusb.edu

              (b) Tell me!

              (c) Wait for your web site to be fixed (typically 24 hours) and then do the lab.

              (d) Show me when done, to get the points.

CS320 Consumers Guide to Programming Languages

It can be difficult to choose a language for a particular project. Most people already have a fairly good idea of how various means of transportation compare. So here is a list that matches programming languages with modes of transportation. Note, certain fashion words (Visual, Object-oriented, Structured, Modular, Aspect-oriented, Concurrent, ...) are attached (like tail fins and spoilers) to most languages. They help sell the language.


Ada 83 - A Sherman Tank

Ada 95 - An army-green Mercedes-Benz staff-car.

Power steering, power brakes and automatic transmission are all standard. No other colors or options are available. If it's good enough for the

generals, it's good enough for you.

ALGOL 60 - An Austin Mini. Boy, that's a small car.

ALGOL 68 - An Astin Martin. An impressive car, but not just anyone can drive it. Manuals written in Double Dutch.

ANSI C - A Camaro (See K& R C below)

APL - A double-decker bus. Its takes rows and columns of passengers to the same place all at the same time. But, drives only in reverse gear, and is

instrumented in Greek.

Assembler - A Formula I race car. Fast, but

unsafe and expensive to maintain. Asbestos

underwear standard equipment.

awk, sed, ... - Broomsticks. Not for muggles.

BASIC - A secondhand Rambler with a rebuilt engine and patched upholstery. Your dad bought it for you to learn to drive. You'll ditch it when you can afford a new one.

BEALGOL - An Austin 1100. Larger and more

powerful than the Austin Mini.

C++ - A Z car - classy with many options and too much power for normal drivers.

C# - the PL/I of the new millennium.

CPL - Ford Edsel. Clever idea that nobody bought.

COBOL - A delivery van. It's ugly, but it does the work.

dBase - Baja bug - looks fun, and supposed to handle

rough ground, but it's stripped down Pascal with roll bars.

ECMAScript - See JavaScript

Eiffel - A Volvo, well-engineered but not popular.

Focus - an M1 tank.

FORTH - A go-cart.

FORTRAN II - A Model T Ford. Once it was king of the road.

FORTRAN IV - A Model A Ford

FORTRAN 77 - A six-cylinder Ford Fairlane with standard transmission and no seat belts.

FORTRAN 90 - Quality is Job One ... but delivered 3 years late.

HTML. A paper airplane.

Jovial - A biplane adopted by the USA air force.

Java - A kit-car. Virtual engine runs on any fuel.

JavaScript - In-car entertainment system. See LiveScript Nothing to do with Java.

JCL - A pair of rubber boots. Down to earth, cumbersome, step by step, and ugly.

JSP - A kit for making paper airplanes.

K&R C - A black Firebird, the all-macho car. Comes with optional seat belts (lint).

LISP - An electric car. Clean, functional but slow.

LiveScript - See ECMAScript

LOGO - A kiddie's replica of a Rolls Royce. Comes with a real engine and a working horn.

Maple/MACSYMA/Mathematica - All Terrain Vehicles.

Modula II - A VW Rabbit with a trailer hitch. Imports go better.

Modula III - A VW Passat.

Pascal - A VW Beetle. It's small but sturdy. Popular with intellectuals. Goes on for ever.

Perl - Sports Utility Vehicle. Designed to do everything. Gas guzzler. Crashes. Drives like a WWII Jeep. Inspires intense loyalty.

PHP - A paper airplane factory.

PL/I - A Cadillac convertible with automatic transmission, two-tone paint job, whitewall tires, chrome exhaust pipes, and fuzzy dice hanging in the windshield.

PROLOG - a Concept-car. You give it a map and say where you want to go. It drives you there.

Python - Nimbus 2000 broomstick.

Ruby - Firebolt broomstick.

Scheme - A hybrid electric/gasohol auto.

SQL - A car salesman - answers question.

UML - Blueprints and designs.

UNIX Bourne Shell - Roller skates.

UNIX C Shell - Skate board. Wear pads!

UNIX Korn shell - Roller Blades.

Visual BASIC - See BASIC. Nice Dash-board!

XML - Design it yourself model airplane.

Z - A peddle bike. Good exercise for the rider.