- 10. This class is required in the CSCI BS and an elective in the CSci BA's.
- 9. You want to be ready for 400+ level CSE classes
- 8. You need 3+ languages for any 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:-)
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 in a team -- how much softwaredevelopment is done.
Reading! Reading! Plus writing (in English). Writing EBNF and drawing UML.
The work and the final depend
on learning what is in the text, on the web,
covered in class, experimented on in Labs, and in the handouts.
We will study all the chapters in the
[ Required Text ]
book
plus handouts and pages on the WWW.
(Required Text): You need the latest edition of Robert W Sebesta's book
- Robert W. Sebesta, University of Colorado, Colorado Springs
- Concepts of Programming Languages, 10/E
- ISBN-10: 0131395319 ISBN-13: 9780131395312
- Publisher: Addison-Wesley Copyright: 2013
- Format: Cloth; 816 pp
- Published: 01/06/2012
- URL
[ 9780131395312.page ]
This is in the bookstore.
Avoid editions before the 10th, there have been significant changes.
In the past, there was a cheaper paperback version 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://cse.csusb.edu/dick/cs320/ ]
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.
The final is critical in determining yor grade. The rest of the coursework is
designed to prepare you for the final.
Continuous assessment includes: participating in classes (40 points),
assigned work (38 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.
Notice: Because this course has no quizzes or midterms it is easy to get a
good grade in the course work and yet not to be ready for the final and so
get a bad overall grade.
You need to review the work we do in the course to prepare for the final.
This includes your lab pages, the exercise pages, your assigned work, and
you project work.
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 two will be corrected, graded (1
point each, 2 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.
At the start of each session you need to be present and ready to do
exercises based on the assigned
reading. You earn one point for
being present and active at the start and another for staying active until
dismissed. Class work
includes practicing final questions.
There is one lab for each class. Each lab lasts 50 minutes.
Each lab 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, testing, and fixing code in C++, C, Java, LISP, Prolog, etc.
(3) drawing UML diagrams,
(4) publishing your laboratory report in HTML on our student 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.
We 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.
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
|
(Close Table)
* 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.
All work has to be shown or handed in before the 12midnight Friday in the
finals week.
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 class work, lab work, and projects.
You can get 100% by giving 10 perfect answers. You can attempt no more
than 12 answers.
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.
Bring about 20 pages of blank paper to write your answers on.
[ template.pdf ]
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.
If you are unable to attend a class session, use the [Contact]
link at the top of my CSE320 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.
- 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.
Details on head and body in a later handout.
- Java::="An " OO " Language from Sun/Oracle".
- LISP::= "LISt Processing Language".
- LRM::="Language Reference Manual".
- OO::="Object-Oriented".
- OOAD::=OO "Analysis and Design".
- Prolog::="Programming in Logic".
- UML::="Unified Modeling Language".
- URL::=Universal_Resource_Locator,
- 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.
Details in a later handout.