CSI 2120 A: Programming Paradigms
Professor
Dr. Safaa Bedawi
Email: [email protected]
Office: STE 0110C
Office Hours: Listed in Brightspace or other times by appointment
Note: Course schedule, methodology, assessments, and exam policies etc. have been planned based on
current public health guidelines. Should these guidelines change, adjustments will be made and
communicated to students.
Description
Presentation of the major programming paradigms: object-oriented, imperative, logic, functional. Related
programming languages, their essential properties and typical applications. Programming in imperative,
logic and functional languages. Influence of programming paradigms on problem solving and program
design strategies. An overview of other paradigms, such as constraint-based, rule-based and event-driven
programming.
Prerequisites: CSI2110.
References
• Allen B. Tucker and Robert E. Noonan, Programming Languages: Principles and Paradigms,
McGraw Hill, 2nd ed., 2007.
• Maurizio Gabbrielli and Simone Martini, Programming Languages: Principles and Paradigms,
Springer, 2010. available on-line from the library.
Online references
• Prolog Programming
• R. Kent Dybvig, The Scheme Programming Language , (4th ed.), MIT Press.
• The Go Programming Language
Tools
• SWI Prolog
• The Racket language
• MIT Scheme
• Free Pascal
• Go
1/4
Timetable:
Tu 4:00PM - 5:20PM
Lecture live via zoom
Th 2:30PM - 3:50PM
https://uottawa-
ca.zoom.us/j/95824483404?pwd=d0w0Tm
Era2loL1hOK0p2eDBvNFV4UT09
Meeting ID: 958 2448 3404
Passcode: CSi2021
asynchronous (Recorded Tutorial will be posted)
Tutorial Th 4:00PM - 5:20PM
There will be 4/5 live sessions
(Details will be posted in BrightSpace)
Labs: live via Teams/Zoom. Links are posted in BrightSpace
A01 Mo 8:30AM - 9:50AM
A02 Mo 8:30AM - 9:50AM
A03 Mo 8:30AM - 9:50AM
A04 Th 10:00AM - 11:20AM
A05 Th 10:00AM - 11:20AM
A07 Th 11:30AM - 12:50PM
Evaluation
Online quizzes 9%
Assignment 24%
Comprehensive/Project 32%
assignment
Final Exam (F) 35%
and a 2% bonus for participation in the labs
Attention, you must obtain at least 50% in the final exam in order to pass this course.
• Comprehensive/Project assignment (1 assignment – 4 parts -Java OOP, Go, Prolog and scheme)
• Assignment (3 assignments (Go, Prolog and scheme))
• A missing assignment will only be excused if it is due to severe illness, in which case a certificate
must be presented.
• The weight of the excused missing component will be shifted to the final exam.
2/4
Online quizzes
• 9 exercises
• each of them which may score 0.0 (no submission), 0.5 (for effort) or 1.0 (if an [almost] correct
answer is submitted).
Mandatory Components: Attendance at the course is compulsory. As stipulated by all the school
regulations, the student who does not present at least 80% of the course will not be able to write the final
exam.
Weekly Schedule(s) Tentative and subject to change
Week# Topics Labs
Week 1 -Jan 10 ---
Introduction
Overview of the object-oriented paradigm
Week 2 – Jan 17 Imperative programming with Go Lab 1: Go
Concurrent programming with Go
Week 3 – Jan 24 Lab 2: Go
The Prolog language
Week 4 – Jan 31 Resolution tree Lab 3: Go
Arithmetic
Week 5 – Feb 7 The lists Lab 4: Prolog
Repetitive operations
Week 6 -Feb 14 Lab 5: Prolog
setof Trees
Week 7 – Feb 21 No classes -No labs -------------
Reading week February 20 to 26
Week 8 – Feb 28 Search in depth and breadth Lab 6: Prolog
Graphs
Week 9 – March 7 Compound terms Lab 7: Prolog
Semantic analysis
Week 10 - March 14 Lab 8: Prolog
Functional programming (Racket-Scheme)
Representation of lists
Week 11 - March 21 Recursive browsing of a list (Racket- Lab 9: Scheme
Scheme)
The map and the let (Racket-Scheme)
Week 12 – March 28 Lab 10: Scheme
The and! and files (Racket-Scheme)
Lists (Racket-Scheme)
Week 13 – April 4 Lab 11: Scheme
Discussion of Paradigms
Classes end Apr 9 Final exam review
3/4
Assignment submission
• Assignments are posted to Brightspace
• Plagiarism will not be tolerated
• Late submission is accepted for two day with penalty (1 % minus each late hour.)
• Theory assignment, please upload on the Brightspace website electronically (you
may type or write by hand legibly and scan it or take a photo of it. Only a single PDF
file is accepted).
• Programming assignment, please submit it to the Brightspace website. Other kinds
of submissions such as email are not accepted
Plagiarism
• Plagiarism (copying and handing in for credit someone else’s work) is a serious academic offence
that will not be tolerated. Note that the person providing solutions to be copied is also
committing an offence as they are an active participant in the plagiarism. The person copying and
the person copied from will be reprimanded equally according to the regulations set by the
University of Ottawa. Please with them refer to the section on academic offences in the
Undergraduate Calendar and the notice onplagiarism on the University of Ottawa website for
additional information: www.uottawa.ca/academic/info/regist/crs/0305/home_5_ENG.htm.
• The University of Ottawa provides, upon request, appropriate academic adjustments for students who
have learning disabilities, health, psychiatric or physical conditions. For more information, please contact
Access Service (http://www.sass.uottawa. ca/access/).
• All materials prepared by the course professor, including course notes, assignments, sample solutions,
and exam papers, are copyright. Copying or scanning them or posting them on a website is therefore a
violation of copyright and is illegal.
4/4