Study different paradigms to understand programming at a more abstract level for a better overall understanding, to realize that different problems, different challenges benefit from different approaches and to be able to chose the best paradigm and language for a new task. In addition, knowing many languages will help to learn new (future) languages.
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.
See the official descripton in the University of Ottawa calendar.
The course material will be covered in synchronous and asynchronous on-line lectures, labs and tutorials. Additional resources in form of textbooks and on-line references are listed below. Attendance of and participation in on-line synchronous lectures, labs and tutorials is mandatory. The course will be using group work and interactive student feedback using Virtual Campus (Brightspace) and Microsoft Teams. You must make sure that you can access these resources and can answer questions during lectures. The asynchronous teaching material will be sequences and will require you to answer quiz questions correctly. Although this is motivated by wanting to help you to learn and to retain the material better (and hopefully enjoy learning it more), it is also used to determine if you complied with the Faculty of Engineering rule of minimum attendance of 80% of lectures (see the marking scheme below).
Course notes will be made available through Virtual Campus, see a tentative list of topics with relevant chapters of the textbook.
Student evaluation will be based on a midterm and a final evaluation as well as on-line quizzes delivered through Virtual Campus (BrightSpace), three programming assignments and a comprehenisve programming assignment in four parts with two deadlines.
The maximum is 100 marks*) with the following breakdown:
|On-line quizzes||12 marks|
|Assignments (3)||18 marks|
|Comprehensive Assignment(4 Parts)||24 marks (6 marks each part, 2 deadlines)|
|Midterm Evaluation||16 marks|
|Final Evaluation||30 marks|
The midterm is scheduled to take place during the official lecture time
Monday, June 15, 2020, 14:30-16:00
Note: The final evaluation mark will not overwrite the midterm mark(s).
Attendance at the midterm evaluation is mandatory. A student who has an official medical certificate (from the University Health Services) for the absence during the midterm will have the final scaled accordingly. In this case, the student will not receive more than 12% of his/her final grade by the drop date.
All components of the course (i.e. lecture and laboratory quizzes, assignments, projects, etc.) must be fulfilled otherwise students may receive an INC as a final mark (equivalent to an F). This also holds for a student who is taking the course for the second time.
Any form of plagiarism or fraud including on an assignment will be reported. If it is found that (parts of) an assignment submission is copied, it will result in an automatic zero for the assignment. The TAs and myself are using software (e.g., moss) that identifies code similarity automatically.