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
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.
Objectives
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.
Work
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.
Reading
We will study all the chapters in the
[ Required Text ]
book
plus handouts and pages on the WWW.
(Required Text): You need the 8th edition of Robert W Sebesta's book
"Concepts of Programming Languages",
published by Addison Wesley -- ISBN 032149321
This is in the bookstore.
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: [ http://www.csci.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 (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
There is one lab for each class.
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.
Table
| What | Examples | Comments | BNF | UML |
|---|---|---|---|---|
| Phase 1 | 3* | 3* | 0 | 4 |
| Phase 2 | 2* | 2* | 3 | 3 |
| Present | 2* | 2* | 3* | 3* |
| Report | 3 | 3 | 5 | 4 |
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.
Glossary
The following definitions use XBNF.
. . . . . . . . . ( end of section CS320 Syllabus) <<Contents | End>>
Preparation for the Next Class
. . . . . . . . . ( end of section Preparation for the Next Class) <<Contents | End>>
Lab 01
1a If you don't have an account
1b If your CSCI account doesn't work
. . . . . . . . . ( end of section Alternative Scenarios) <<Contents | End>>
. . . . . . . . . ( end of section Lab 01) <<Contents | End>>