UNIVERSITY OF QUEBEC AT CHICOUTIMI

COMPUTER SCIENCES AND MATHEMATICS DEPARTMENT

Programming Languages

(8PRO102)

Professor:Stephen Whitney

Semester: Winter 2005

Prerequisites:8SIF101 Data Structures and Algorithms

SYLLABUS

1. Course Objectives

This course will help students to understand the programming development cycle. Students will also acquire the knowledge they need to be able to choose which programming language will provide the best solution for a given problem.

  1. Course Content

Programming paradigms: structured (C, Cobol), event-driven (ADA, Visual Basic), functional (LISP), logical (Prolog), object-oriented (C++, Java). Compiling. Script interpretation. Expert systems (Clips).

  1. Relevancy of the Course

According to the ACM/IEEE (Tucker, A.B. et al, Computing Curricula, 1991, Comm. ACM 34 :6, p. 68-84) taking a course in programming languages concepts is mandatory when studying in a computer science program. At UQAC, a similar course (8INF501) was given from 1991 to 1994. Another course, more centered on compiling ( was offered in 1997, and a course similar to the one presently being offered ( in 2001. The present course (8PRO102) is obligatory in the Bachelor’s Degree in Computer Science (7833, 6508) and in Computer Engineering (7943: Software Engineering concentration) and optional in Administrative Data Processing (7710) and in the Minors and Certificate in Computer Science (8202, 4202).

  1. Teaching Strategies
  • Lectures (2 periods per week)
  • Tutorials and in-lab assistance (1 period)
  • Individual and team work.
  1. Evaluation

4 Tutorials(each worth 10% of final mark / to be done individually or in teams of two).

2 Closed book exams (each worth 30%)

Letter grades will be given according to final marks as follows:

90% will receive A or A+, 80% B or B+, 70% C or C+, 60% D or more. As far as borderline cases are concerned, the professor will take corrections made to marks or in class or have students do make-up exams. Moreover, all tutorials must be turned in on the due dates stated in course calendar below. Any work turned in late will incur a 10% penalty per day (min. 0).

  1. References:

Students should also consult the material at my office, on the reserve at the library.

  • Sebesta, R.W., Concepts of Programming Languages, 6th Edition, Addison-Wesley, 2004 (mandatory textbook).
  • Whitney, S., Langages de programmation (notes on paper are less than $5 or log-on to the e-version), 2004.
  • Wilson, L.B. & Clark, R.G., Comparative Programming Languages, 3rd Edition, updated by Clark (2001), Addison-Wesley, 2001.
  1. Course Outline

This calendar includes the exact due dates of tutorials and exam dates.

August 30, 31:

Syllabus. Introduction: reasons, domains, criteria, design,

categories, etc.

September 7:

Evolution: FORTRAN, ALGOL, COBOL, LISP, APL, BASIC, C, Pascal, ProLog, Ada, Smalltalk, etc..

September 14:

Syntax and semantics: BNF, attributive grammars, semantic analysis.

September 20, 21:

Lexical and syntactical analysis: robots, grammars, 1ex.yacc. Turn in

Tutorial #1.

October 4, 5:

6 Types of Data: structured and abstract; objects. APL, J, K. Turn in

Tutorial #2.

October 12:

Affectation: expressions, overload, conversion types, etc.

October 18, 19:

Exam #1. Control: sequence, connecting, selection, iteration, etc.

November 1, 2:

Sub-programs and their implementation: parameters, management.

November 8, 9:

Abstract data types and support of software/hardware for the OO model.

November 15, 16:

Concurrency and managing exceptions. Turn in Tutorial #3.

November 22, 23:

Functional languages: LisP, FP, ML, Haskell, etc.

November 29, 30:

Logical languages: ProLog, expert systems. Turn in Tutorial #4.

December 6, 7, 13:

Review. Exam #2: to be scheduled between the 14th and the 20th.