C/C++

CGI

COBOL

CSS

Fortran

HelloWorld

(X)HTML

Java

JavaScript

Lisp

Perl

PHP

Prolog

Python

References

Ruby

Unix shell

Visual Basic

XML


CSci532 Programming Languages and Paradigms



Syllabus: Fall 2008   Credit Hours: 3
Class Time: 03:00pm – 03:50pm, MWF Classroom: Streibel Hall 238
Instructor: Wen-Chen Hu Office: Streibel Hall 212


University of North Dakota Course Description —
A study of current topics in programming languages and paradigms. Course content may vary with current issues and student interests.

Programming Languages from Webopeida
A programming language is a vocabulary and set of grammatical rules for instructing a computer to perform specific tasks such as C/C++ and Java.

Programming Paradigms from Wikipedia
A programming paradigm is a fundamental style of computer programming. A programming language can support multiple paradigms. For example programs written in C++ can be purely procedural, or purely object-oriented, or contain elements of both paradigms. Software designers and programmers decide how to use those paradigm elements. In object-oriented programming, programmers can think of a program as a collection of interacting objects, while in functional programming a program can be thought of as a sequence of stateless function evaluations.


Grading:


Housekeeping Details:


Tentative Schedule:


Week

Class Topic Reading Due Where
1 08/27
08/29
1. Introduction      
  1.1 Course outline      
  1.2 Programming languages      
  1.3 Programming paradigms      
2 09/03
09/05
2. Programming Language Syntax      
  2.1 The Chomsky hierarchy      
  2.2 Context-free grammars      
09/01 Labor Day holiday — no classes      
3 09/08
09/10
3. Programming Language Syntax (Cont.) DPL    
  3.1 BNFs      
  3.2 Ambiguity      
09/12 Presidential inauguration — no classes      
09/09 Last day to add a full-term course
Last day to add audit or change to/from audit
Drops after the last day to add will appear on a transcript.
     
4 09/15
09/17
09/19
4. Translational Semantics Using Attribute Grammars Attribute
Grammars
   
  4.1 Syntax-directed translation Web    
  4.2 Syntax-directed definitions      
  4.3 Attribute grammars      
5 09/22
09/24
09/26
5. Translational Semantics Using Attribute Grammars (Cont.) Scripting    
  5.1 Dependency graphs   HW I
on 09/22
 
  5.2 Synthesized attributes      
  5.3 Inherited attributes      
6 09/29
10/01
10/03
6. Denotational Semantics Denotational
Semantics
   
  6.1 Introduction      
  6.2 Syntactic domains      
  6.3 Semantic domains   HW II
on 10/03
 
7 10/06
10/08
7. Denotational Semantics (Cont.) Handheld    
  7.1 Semantic functions   EX I
on 10/06
 
  7.2 Environments and assignments      
10/10 Exam I      
8 10/13
10/15
10/17
8. Operational Semantics Operational
Semantics
   
  8.1 Introduction      
  8.2 A reduction machine      
  8.3 Logic inference rules      
9 10/20
10/22
10/24
9. Operational Semantics (Cont.)      
  9.1 Reduction rules for integer arithmetic expressions      
  9.2 Environments and assignments      
  9.3 Control      
10 10/27
10/29
10/31
10. Axiomatic Semantics Axiomatic
Semantics
   
  10.1 Introduction      
  10.2 Hoare logic      
  10.3 The weakest precondition wp      
11 11/03
11/05
11/07
11. Axiomatic Semantics (Cont.)      
  11.1 General properties of wp      
  11.2 Proofs of program correctness      
  11.3 Proving termination   HW III
on 11/07
 
11/07 Last day to change to or from S/U grading
Last day to change to or from audit grading
Last day to drop a full-term course or withdraw from school
     
12 11/10
11/12
11/14
12. The Lambda Calculus λ Calculus    
  12.1 Introduction      
  12.2 Lambda reduction      
  12.3 Recursion      
13 11/17
11/19
11/21
13. Functional Programming Paradigm      
  13.1 Programs as functions Fixpoint EX II
on 11/17
 
  13.2 Recursive functions      
  13.3 Delayed evaluation      
14 11/24 14. Logic Programming Paradigm Logic    
  14.1 Logic and logic programs     We're here.
11/26 Exam II      
11/28 Thanksgiving recess — no classes      
15 12/01
12/03
12/05
15. Object-oriented Programming Paradigm ADT    
  15.1 Abstract data types   HW IV
on 12/01
 
  15.2 Inheritance      
  15.3 Dynamic binding      
16 12/08
12/10
16. Parallel Programming Paradigm      
  16.1 Threads      
  16.2 Message passing      
17 12/17 Final exam (05:30pm – 07:30pm, Wednesday)      
18 12/23 Grades posted before noon, Tuesday