Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: daixieit




Fall 2021


Course Description

Survey of programming paradigms:  Imperative, functional, and logic programming.  Issues in the design and implementation of programming languages.  Declaration models: binding, visibility, and scope.  Type systems, including static and dynamic typing. Parameter passing mechanisms. Hybrid language design. Lectures:  three

hours per week. Tutorial:  one hour per week.

Pre-requisite:   COMP 249.


Method of Delivery

This course is delivered in two formats:

❼ Section U is fully REMOTE. All lectures and tutorials will be live over ZOOM. Please consult Moodle on

how to connect to the live sessions. A few pre-recorded videos may be posted on Moodle, which must be watched prior to attending the class.

❼ Section DD is delivered in blended format.   All lectures and tutorials will be held on campus.   Some

contents may be available online.

Both sections, however, share same Moodle page; and as a result the materials are shared. 



The official pre-requisite for this course is COMP 249.   Students are expected to know and remember the knowledge that you acquired in the fundamentals of programming.  The important skills needed to do well in this course include:  good programming skills, including the ability to understand, design, implement, and debug programs with non-obvious flow of control.


Objectives and Learning Outcomes

The objective of this course is to enable students to understand the differences between different programming paradigms, to develop algorithms for problem solving, and finally to develop programs in different programming languages. The course teaches the principles of programming languages and basic skills needed to understand analyze and develop algorithms for problem solving using different paradigms.  Examples from mathematics and data structures will be given and discussed. The following programming paradigms will be covered: logic,

functional, procedural, imperative, object-oriented, and meta programming.

This course will cover the following topics:

❼ Survey of programming paradigms: logic functional, Procedural, and Imperative programming. 

❼ Issues in the design and implementation of programming languages.

❼ Declaration models: binding, visibility, and scope.

❼ Type systems, including static and dynamic typing.

❼ Parameter passing mechanisms. Hybrid language design.



There is no text book in this course, however, major parts of the course is extracted from the following course pack:

COMP  348  Principles  of Programming  Languages, 2018 Edition2, course pack by Dr. Constantinos  Constantinides. This course pack covers the major course material (optional).

More references and tutorials will be posted, as part of the lecture notes.  Lecture notes and other reading materials will be available throughout the semester via Moodle.

In additional to above, the following book is recommended as a further reading:

Programming Language Pragmatics , 2009, Michael L. Scott, Elsevier (complementary, op- tional).


Teaching Method

The course comprises of weekly lectures and practical training; both in the form of tutorials and assignments. It is emphasized that the attendance in lectures as well as tutorials is mandatory for learning and performing well in this course.

Note that this is an online course.  The course is delivered in a semi-synchronous approach which means the content of the course is delivered using pre-recorded videos as well as live sessions. The goal of the live sessions is to deliver a flipped-classroom environment that enables student engagement and active learning. Therefore, you are required to be present during the scheduled hours.

Make sure you are connecting via a device that is equipped with webcam as well as Microphone. Both webcam and microphone are required, especially during demo sessions (see assignments under workload and grading). You also need a reliable highspeed internet connection in order to be able to join the class.

Method of Contact

Your instructor, as well as all teaching assistants are available on Moodle. Their contact information including zoom meeting IDs are posted on Moodle.

The preferred method of contact is via Moodle messaging system.   Please avoid emails.   Do not send any attachments by emails. Emails with attachments may be filtered, rejected, or identified as spams.                     In addition to Moodle messing, you are encouraged to use the discussion Forum.   See the important notes section on assignment submission. Do not submit assignments by emails. They will not be marked.

Teaching Assistants

The contact info of all teaching assistants will be available on Moodle. In addition to the eight tutors, a number of PODs (Programmers on Duty) will be available throughout the semester to assist you with the tutorials exercises and assignments. More information will be posted on Moodle.


Course Structure


The lectures are a key component of the course, and you are advised to attend the lectures regularly and attentively. The course material is extensive and includes several difficult concepts. Accordingly, we will try to utilize the lecture time in doing things that you would not get by simply reading the book (explaining difficult concepts, giving you alternate perspectives, relating course material to other fields, giving you tools to solve problems, etc.) rather than merely repeating facts that you can simply read from the text book. It is strongly advised that you stay current in your reading of the textbook, and attend the lectures regularly.  That will enhance your learning experience and prevent you from being lost in the lectures. In fact, we suggest that you casually go through the textbook sections once before the lecture.  You are also strongly advised to go and read the material thoroughly after the lecture.  Discussing the material with your fellow classmates, solving problems, and asking questions in the lectures are also likely to help you.

Some part of the lectures may be delivered as pre-recorded videos.  It is important that you watch the pre- recorded videos before attending the live class.



The tutorials will reinforce the material seen during the lectures with examples and exercises. The tutorials are also designed in a way that would assist you to get deeper knowledge and experience of problem analysis and problem solving. It is hence strongly recommended that you attend all the tutorials.

Tutorials will take place every week.  During the tutorial session, your tutor will explain more examples as well as discuss the assignments and answer questions related to the course, and more specifically related to the assignments. We strongly encourage you to attend these tutorials.

Tutorials start as of week two. There is no tutorial during the first week of classes.



We strive hard to give exams where your success does not depend on rote memorization.  You will probably find it difficult to answer many of the questions if you have memorized the concepts without understanding them. Moreover, many exam questions will not only test your understanding of concepts, but also your ability to apply them to solve problems.  The assignments should help you in preparing for the exams.  There will be no substitution of any missing exam.

There will be three exams in total.  The exams are common to both sections.  These exams are timed online activities and there is no replacement or substitution for missed tests under any circumstances.  Please see the important dates at the end of this document.

Each exam focuses on selected programming languages.  They normally contain some multiple-choice, short coding, and detailed-answer questions.  The format and coverage of the each exam will be discussed prior to the exam date.

All three exams are online exams that will take place over The Concordia OnLine Exams  (COLE) system. Additionally, you may be called for a follow-up oral exam afterwards.

To pass the course, you must pass the overall exams regardless of your grade in the assignments.

IMPORTANT: All exams will be proctored, either through Zoom invigilation (which is the most likely way that the exam will take place), or through auto-proctoring. Please read very carefully the Addendums (at the end of the document), which provide the full details of such exams. You must make sure that you read this information very carefully; as you need to drop the course if you are not able to accommodate the given rules.


Workload and Grading

This is a reasonably heavy course with several new programming languages. Therefore, you should be prepared to spend adequate time and effort on this course.


Assignments:   20%

There will be four programming assignments. These assignments are designed to give you more understanding of the course material and to give you practices into various aspects of programming languages. The due dates of the assignments are set and cannot be changed. Check the important dates at the end of this document.     Every assignment covers the programming language / paradigm that is discussed in the class. More information on the specific software, IDE, and compiler version, as well as where it is located will be provided during tutorial times. The details will be given in the class, as well as posted in the assignment document.

Additionally, a some reading assignments will be posted throughout the semester to help you further understand the concepts.

Please note that all assignments will be posted on Moodle, all of which must be submitted electronically via Moodle. No email submission is accepted.

IMPORTANT:  A demo will be required for each of programming assignments.   Markers will communicate with you via Moodle and you must book a demo time with them. You must perform the demo (if working in a group, all members of the team must be present during the demo). The demos will be carried out online via ZOOM. More information will be provided by the markers. All members of the team must be present during the demo. Failing to demo the assignment or failing to attend the demo at the reserved time, will result in a 0 mark regardless of your submission. There will be no replacement for a missed demo time.

Note:  Due to special circumstances, in case of system glitch or medical reason, a deme may be rescheduled by the marker. In case of rescheduling, up to 40% of the mark may be deducted.


Exams:   80%

There will be three exams:  TEST 1 (25%), TEST 2 (25%), and TEST 3 (30%).  TESTS 1 and 2 are pre- scheduled and take place outside lecture hours.  Test 3 will be scheduled by the Exams Office during the final exams period. Please see the important dates at the end of this document.

All three tests will be online and may be taken on COLE (The Concordia OnLine Exam) platform.


Grading:   The grading of the course will be done based on the relative percentages assigned to the assignments and the tests.   For reasons of fairness, we may choose to scale up/down the marks in a particular test or assignment to ensure that all aspects of the course receive a fair weight. Any such “fine-tuning” will be made known to you before the final grades are assessed. Finally, there are no pre-set cutoff points for the final grades; the cutoff points will be decided based on an assessment of difficulty level, class performance, fairness, and instructor’s wisdom from teaching and grading the course in the past.  That is, there is no definite rule for translation of number grades to letter grades.

❼ In order to pass the course, you must pass the overall grade of all four tests regardless of your grade in

the assignments.

❼ There is no standard relationship between percentages and letter grades assigned for this course.


Graduate Attributes

As part of both Computer Science and Software Engineering program curriculum, the content of this course includes material and exercises related to the teaching and evaluation of graduate attributes.  Graduate at- tributes are skills that have been identified by the Canadian Engineering Accreditation Board (CEAB) and the Canadian Information Processing Society (CIPS) as being central to the formation of Engineers, Computer Scientists and IT professionals. As such, the accreditation criteria for the Software Engineering and Computer Science programs dictate that graduate attributes are taught and evaluated as part of the courses. This course aims at teaching and evaluating the following graduate attributes:


Demonstrate Knowledge   Knowledge of imperative and declarative programming paradigms with a wide array of programming technologies such as object-oriented, procedural, functional, functional object-oriented, logic programming  and multi-paradigm programming.   Clauses,  procedures  and queries,  backtracking,  the inferencing process, unification, instantiation and resolution. Expressions and lists, binding, defining functions, pure vs. side effecting functions, referential transparency, idempotence, higher-order and anonymous functions and function composition. Primitive vs. composite data types, pointers, arrays, records, unions and enumerated data types.  Message passing object-oriented model, inheritance and polymorphism, static vs.  dynamic object types, distinguishing between compiler and run-time system responsibilities, casting.  Modularity, separation of concerns, crosscutting concerns, Object extensions, modules, and Mixins, Introspection, Generic function object-oriented model, primary vs. auxiliary methods.


Problem Analysis   Analyze problems to determine viable paradigm and language spaces and tradeoffs. Map solutions to specifications. Being able to move from specification to code. Analyze implementations to determine what task they perform and how they do it. Being able to move from code to specification.


Use  of Engineering  Tools   Deployment of compilers, interpreters, integrated development environments (IDEs) for the implementation and debugging of programs.  Being able to extend the functionality of IDEs with plugging. Use of application programming interfaces (APIs) as building blocks, use of libraries to support reuse. Use of frameworks for testing.

The evaluation of these attributes will be based on: 1) Assignments, 2) Tests. This evaluation is used to indicate your proficiency in all of the attributes as per accreditation requirements.


Important Notes

Website and other Resources

Resources for the course (assignments, tutorials, etc.) will be available online on the Moodle; available through the MyConcordia portal https://moodle.concordia.ca.

Finally, the faculty web pages have a wealth of information pertaining to our computer systems and software, which includes simple user guides, and answers to many standard questions.  You should explore these help pages. Begin your exploration from the URL: http://www.encs.concordia.ca/helpdesk/faq/faq.php.


Important announcements are made on a regular basis on Moodle.  While you normally receive a transcript copy via email, for various reasons you may not receive them in time or even not receive them at all. You are strongly advised to check the announcements section on a daily basis.

Time-Zone / AM/PM

All date time information used in the announcements are in Montreal’s standard Daylight-Saving Time (EDT). AM means before-noon, and PM means afternoon.  12PM is noon and 12AM is midnight.  The due time of every assignment is different. Do not make assumptions. Pay attention to the date time information.


Content belonging to instructors shared in online courses, including, but not limited to, online lectures, course notes, and video recordings of classes remain the intellectual property of the faculty member.  It may not be distributed, published or broadcast, in whole or in part, without the express permission of the faculty member. Students are also forbidden to use their own means of recording any elements of an online class or lecture without express permission of the instructor.  Any unauthorized sharing of course content may constitute a breach of the Academic Code of Conduct and/or the Code of Rights and Responsibilities.


You are advised to retain a copy of all your work until you receive your final grade for the course.


Software and Hardware Requirements

All students, especially those who are attending remote sessions, are expected to have access to a computer with following capabilities:

❼ Reliable internet connection

❼ Camera and Microphone (your computer and/or cellphone)

❼ Document scanning application such as Adobe Scan app: i.e.



Code of Conduct

Students should be aware of the University’s academic integrity and code of conduct as specified in sections 17.10.2 and 17.10.3 in the Undergraduate Calendar: http://registrar.concordia.ca/calendar/17/17.10. html.

In particular please pay attention to the parts concerning cheating, plagiarism, and possible consequence of violating this code.  Sharing codes, design diagrams, algorithms, etc.  amongst teams or taken from elsewhere (without proper citation) is not permitted. No need to mention that one learns little from copying others’ work. All submissions in this course for assignments must be adequately bound and include as the cover page, the “Expectations of Originality”.



We highly recommend collaborative learning in this course for better preparation. This is encouraged also when doing the assignments.  It is also recommended that you start working on the course assignments as early as possible!

Submission format

All assignment-related submissions must be adequately archived in a ZIP file using your ID(s) and last name(s) as file name. The submission itself must also contain your name(s) and student ID(s). Use your “official” name only - no abbreviations or nick names; capitalize the usual  “last” name.  Inappropriate submissions will be heavily penalized. Only electronic submissions will be accepted. Students will have to submit their assignments (one copy per group) via Moodle.  Assignments must be submitted in the right DropBox/folder of the assignments.  Assignments uploaded to an incorrect DropBox/folder will not be marked and result in a zero mark.  No resubmissions will be allowed.

Using ZOOM

students in section U (for both lecture and tutorial sessions) and all students in general who attend remote sessions need to use ZOOM software to attend the live session. Registration is not mandatory, however recom-mended.  Use your real name when you connect to the class.  Failure to do so, may result in a complete ban. Check course Moodle page for more information on how to connect to the class.


Exam Platform

The information on how to take the tests, including the hardware and software requirements, the exam platform, rules, and instructions will be available prior to the exams.

Oral Exam via ZOOM

After taking a written test, you may be asked by your instructor to participate in an Oral examination via ZOOM, in which such case your grade for that particular test is subject to passing the oral exam.  Failure to do so may result in zero mark.

Important Notes on Online Exams and Invigilation

The instructions on how to take the online exams will be available prior to the exam date. It is important that you follow them exactly, before and during the exam. Failure to do so may result in the submitted exam to be invalidated. Please also note the following with respect to online exams and live proctoring software:

❼ that the tests will take place during the designated date and time. All exam times will be set to Eastern

Standard Time. See the important dates at the end of this document.

❼ that selected tests may be invigilated;  and therefore,  your image,  voice,  and screen activity may be

recorded throughout the duration of the exam.

❼ that you must show your Concordia University Identification card to validate your identity.  Alternative

government-issued photo identification will be accepted, though it is not recommended. Only identification in English or French will be accepted.

❼ that any recording made  (if one is made) will only be viewed by authorized university personnel  (no

external entity has authorization to review the recording).

❼ that you will be responsible for ensuring appropriate, properly functioning technology (webcam, a mi-

crophone, appropriate browser and an ability to download any necessary software, as well as a reliable internet connection with a minimum of a 3G connection).

For your online examination(s), you will need to download the appropriate browser lockdown technology and use Zoom. Protocols for entering the examination will be provided by your professor.

❼ that you should enter the virtual test site and become familiar with the software that will be used for

your exam before starting the exam.

❼ that you will need a quiet place within which to take the exam. Earplugs or noise-cancelling headphones

that are not connected to a device may also be used to allow you to focus for the duration of the exam.



The most common offense under the Academic Code of Conduct is plagiarism which the Code defines as “the presentation of the work of another person as one’s own or without proper acknowledgement” (Article 16a). This could be material copied word for word from books, journals, internet sites, professor’s course notes, etc. It could be material that is paraphrased but closely resembles the original source.  It could be the work of a fellow student, for example, an answer on a quiz, data for a lab report, a paper or assignment completed by another student.  It might be a paper purchased through one of the many available sources.  Plagiarism does not refer to words alone - it can also refer to copying images, graphs, tables, and ideas.  “Presentation” is not limited to written work.  It also includes oral presentations, computer assignments and artistic works.  If you translate the work of another person into French or English and do not cite the source, this is also plagiarism. If you cite your own work without the correct citation, this too is plagiarism. In simple words:


Source: http://provost.concordia.ca/academicintegrity/plagiarism


Additional Resources

Access Centre for Students with Disabilities:   http://concordia.ca/students/accessibilityStudent Success Centre:   http://concordia.ca/students/success.

Addendum 1  Zoom invigilation

This course will be taught in a blended format however all assessments will be completely online.  All tests will be provided through the  Concordia  Online Exams  (COLE) platform with online live proctoring  (also known as invigilation). More information about the COLE system may be found at the COLE website: http: //www.concordia.ca/COLE.

Please note the following with respect to online live proctored exams:

❼ That the exam will take place during the exam period at the designated date and time set by the professor

(midterms) or the Exams office (final).

❼ All exam times will be set to Eastern Standard Time.

❼ That your image, voice and screen activity may be recorded throughout the duration of the exam.

❼ That you must show your Concordia University Identification card to validate your identity. Alternative

government-issued photo identification will be accepted, though it is not recommended. Only identification in English or French will be accepted.

❼ That any recording made (if one is made) will only be viewed by authorized university personnel (no

external entity has authorization to review the recording).

❼ That you will be responsible for ensuring appropriate, properly functioning technology (webcam, a mi-

crophone, appropriate browser and an ability to download any necessary software, as well as a reliable internet connection with a minimum of a 3G connection).

 For your online examination(s), you will need to download the appropriate browser lockdown tech-

nology and use Zoom. Protocols for entering the examination will be provided by your professor.

❼ That you should enter the virtual test site and become familiar with the software that will be used for

your exam before starting the exam.

❼ That you will need a quiet place within which to take the exam. Earplugs or noise-cancelling headphones

that are not connected to a device may also be used to allow you to focus for the duration of the exam.

Students who are unable to write an exam because they are unable to meet the above conditions and require- ments are advised that they will need to drop the course.  More information can be provided on the next or alternative offering of this course by consulting the Department.  Students are advised that the drop deadline (DNE) for this course is September 20, 2021.

 Students who require additional accommodations for their exams due to a documented disability should contact the Access Centre for Students with Disabilities as soon as possible ([email protected]).

If you face issues during the exam, you should inform your professor of those issues immediately.  Please note that there are in-exam supports you should spend time getting to know.  Visit the COLE website for more information: http://www.concordia.ca/COLE.


Addendum 2  Auto-proctored timed assessments

This course will be taught in a blended format and all assessments will be completely online.  Online exams are planned to be provided with online live proctoring (see Addendum 1 above). Nonetheless; if this could take place for some reason, then the exams will alternatively be provided through the Concordia Online Exams (COLE) platform with online proctoring (also known as auto-proctoring). More information about the COLE

system may be found at the COLE website: http://www.concordia.ca/COLE.

Please note the following with respect to online live proctored exams:

❼ That the exam will take place during the exam period at the designated date and time set by the professor

(midterms) or the Exams office (final). All exam times will be set to Eastern Standard/Daylight Time..

❼ That your image, voice and screen activity will be recorded throughout the duration of the exam..

❼ That you must show your Concordia University Identification card to validate your identity. Alternative

government-issued photo identification will be accepted, though it is not recommended. Only identifica