CSC301 Homepage
Fundamentals of Programming Languages
Spring 2008
Description:
Language enables thought. In this course we study a class of
formal languages known as programming languages. Similar to
natural languages, these formal languages enable us to to reason about
algorithms and procedures to solve computational problems on computers.
However, their formal nature restricts the kind of meanings
particular language constructs can assume and therefore makes them
amenable for the execution on a computer.
Over the years many different programming language dialects have
evolved to address particular technical issues, e.g. object-oriented
languages, real-time languages, database query languages, logic
languages, etc. Here we
study the major structures of modern programming languages.
Understanding not only the syntax of a language but also the semantics
and implementation techniques of this language will allow you to design
better programs. Having deeper insights into the design of a
programming language will also enable you to learn new programming
languages much faster. Having a thorough understanding of today's
languages allows you to design the programming languages of tomorrow.
Objective
Upon completion of this course
- You will be able to discern and contrast the major programming language paradigms in use today.
- You will be able to pick an appropriate language for the job at hand.
- You will have deeper insights into the evolution of programming languages.
Announcements:
>> Final Examination, Tuesday May 6th, Wales Rm 226, 8am-11am, **open book/open notes**
[4/21/08] Posted homework assignment #7, see Lecture notes
[4/16/08] Here are the Prolog rules for the operational semantics, use these instead
of typing them in from scratch:
val1(plus(X,Y),Value) :-
val1(X,XValue),
val1(Y,YValue),
Value is XValue + YValue.
val1(times(X,Y),Value) :-
val1(X,XValue),
val1(Y,YValue),
Value is XValue * YValue.
val1(const(X),X).
[4/14/08] Posted homework assignment #6
[4/7/08] Posted programming assignment #7
[4/2/08] Posted programming assignment #6
[3/31/08] Posted programming assignment #5
[3/26/08] Posted homework assignment #5
[3/10/08] Posted programming assignment #4
[3/5/08] Posted programming assignment #3
[2/29/08] Posted programming assignment #2
[2/26/08] Posted HW4.
[2/23/08] Posted programming assignment #1
[2/17/08] Homework solutions to HW1, HW2, and HW3.
[2/12/08] posted the missing slides
[2/12/08] Quiz #1, Tuesday 2/19, chap 1-4
[2/12/08] posted homework assignment #3
[2/6/08] posted homework assignment #2
[1/30/08] ** NO CLASS Tuesday 2/5 **
[1/1/08] Welcome!
Documents of Interest:
NOTE: email submissions are not
acceptable for both homework assignments and programming assignments.
Homework Assignments:
- Homework #1: 2.1 b, c, g, j - due Thursday 2/7 in class.
- Homework #2: 3.1 a; 3.3 b; 3.4 b - due Tuesday 2/12 in class.
- Homework #3: 4.4 - due Thursday 2/14 in class.
- Homework #4: 6.2; 6.4 d through g - Thursday 2/28 in class.
- Homework #5: 18.6 a,b,c - Tuesday 4/1 in class.
- Homework #6:
due Thursday 4/17 in class.
Programming Assignments:
For each programming assignment
you will need to submit your source code and proof that
your program runs on sample input, e. g., screen shot, cut and paste
the
results of the run into a MS Word document etc.). Also, please
follow the instructions given in the book for each problem
carefully.
Handwritten work will not be accepted
as programming assignment.
- Programming Assignment #1: 5.2, 5.3, 5.4, 5.7 - due Tuesday 2/26 in class.
- Programming Assignment #2: 7.2, 7.6 - due Tuesday 3/4 in class.
- Programming Assignment #3: 9.6, 9.26 - due Tuesday 3/11 in class.
- Programming Assignment #4: Read Chap 13,15,17; do problem 17.3 - due
Thursday 3/27 in class (see class notes for details).
- Programming Assignment #5:
the necessary facts can be found here -
due Thursday 4/3 in class.
- Programming Assignment #6:
due Tuesday 4/8 in class.
- Programming Assignment #7 - due Tuesday 4/15 in class.
Instructor:
Dr. Lutz
Hamel
Tyler Hall, Room 251
Office Hours: Tuesday 2-3pm, Thursday 11am-12pm
email: lutz at inductive-reasoning dot com
TA:
TA:
Esmie Jose
Office Hours: Tyler Hall 135, Mon & Wed 1-2pm
phone: 874-5864
email: jesmie@cs.uri.edu