The goal of this course is to introduce students to computer programming; it is aimed at students who have little or no background in the subject. The course uses the Java programming language. This course aims to teach students a way of thinking that will enable them to build non-trivial programs.



Teaching Assistants:


Office hours:

David BecerraBy appointmentENGTR 3150
Carlos Gonzalez OliverFriday 2pm-4pmENGTR 3110
Lianna HambardzumyanMonday 2pm-4pmENGTR 3110
Rohit VermaThursday 4pm-6pmENGTR 3110
Roman Sarrazin-GendronWednesday 2pm-4pmENGTR 3110
Navin MordaniMonday 10am-12pmENGTR 3110
Ayrin TabibiTuesday 2pm-4pmENGTR 3110

Course Webpage:

Course Material:
There is no required material; however, I recommend the following material:



Primary Learning Objectives:
By the end of this course, you will be able to:

Your final grade in the course is calculated by taking the maximum of the following two options:

OR This means that students who perform better on the final than on the midterm exam will have the (automatic) option to make their grading scheme 40% assignments, and 60% final. However, the assignments are a key part of learning the material, and as such there is no 100% final option.


Release DateDue DateAnnounce
May 02Welcome to COMP202
May 02May 14Assignment 1 is out
May 11May 15The due date for Assignment 1 is now May 15
May 11May 27Assignment 2 is out
May 27May 28The due date for Assignment 2 is now May 28
May 27June 6Assignment 3 is out
June 6June 7The due date for Assignment 3 is now on June 7
June 6June 16Assignment 4 is out


Lecture 1May 02Presentation of the course. Introduction to ProgrammingChapter 1Lecture 1, Syllabus, Assignment 1,,
Tutorial 1May 03 - 2:00pm - 3:30pm ENGTR3120Installation of eclipse (Rohit)Tutorial 1
Lecture 2May 04Variables and Data TypesChapter 2-3Lecture 2
Tutorial 1May 05 - 10:30am - 12:00pm ENGTR3120Installation of eclipse (Rohit)Tutorial 1
Lecture 3May 09Boolean and Mathematical Expressions, Flow ControlChapter 3-6Lecture 3
Tutorial 2May 10 - 10:30am - 12:00pm ENGTR3120Variables+Expressions+Flow ControlTutorial 2,
Lecture 4May 11Loops and ArraysChapter 7-9Lecture 4, Assignment 2,
Tutorial 2May 12 - 10:30am - 12:00pm ENGTR3120Variables+Expressions+Flow ControlTutorial 2,
Assignment 1 is dueMay 15Assignment 1 is due
Lecture 5May 16Arrays, reference types and methodsChapter 8Lecture 5
Tutorial 3May 17 - 10:30am - 12:00pm ENGTR3120Loops + Arrays Tutorial 3,
Lecture 6May 18MethodsChapter 8Lecture 6
Tutorial 3May 17 - 10:30am - 12:00pm ENGTR3120Loops + Arrays Tutorial 3,
Lecture 7May 23Sorting, Midterm reviewLecture 7
MidtermMay 25MidtermMidterm, SolutionsLongQuestion, Assignment 3
Assignment 2 is dueMay 27Assignment 2 is due
Lecture 8May 30Tic Tac Toe and ExceptionsLecture 8
Tutorial 4May 31 - 10:30am - 12:00pm ENGTR3120Methods + ExceptionsTutorial 4,
Lecture 8Jun 01Sorting and Object Oriented ConceptsLecture 8
Tutorial 4Jun 02 - 10:30am - 12:00pm ENGTR3120Methods + ExceptionsTutorial 4,
Lecture 9Jun 06Classes and ObjectsChapter 9-10Lecture 9, Assignment 4,,
Assignment 3 is dueJun 07Assignment 3 is due
Tutorial 5Jun 07 - 10:30am - 12:00pm ENGTR3120Classes and ObjectsTutorial 5
Lecture 10Jun 08Classes and Objects, ArrayListsChapter 9-10Lecture 10,,,,
Tutorial 5Jun 09 - 10:30am - 12:00pm ENGTR3120Classes and ObjectsTutorial 5
Lecture 11Jun 13Linked Lists and RecursionChapter 11Lecture 11
Tutorial 6Jun 14 - 10:30am - 12:00pm ENGTR3120Final Review - Multiple choice questionsTutorial 6
Lecture 12Jun 15File Input/Output and Final ReviewChapter 11Lecture 12
Tutorial BonusJun 15 - 2:00pm - 4:00pm ENGTR3120Final Review - Long Answer questionTutorial Bonus
Tutorial 6Jun 16 - 10:30am - 12:00pm ENGTR3120Final Review - Multiple choice questionsTutorial 6
Assignment 4 is dueJun 16Assignment 4 is due
Final ExamJun 19Final ExamFinal14, Final15, Final16, Final17



Policy on discussion
We are in this course to learn. We are all a team. Then, we must respect the ideas, questions and opinions of our mates. All the ideas about how to solve a problem are valuable and welcome.

Policy on collaborations
I greatly encourage you to discuss the assignment with each other in your class. However, these discussions should not so far that you are sharing code or giving away the answer. A rule of thumb is that your discussions should be considered public in the sense that anything you share with a friend should be sharable with any student in the class. Work submitted for this course must represent your own efforts. Assignments must be done individually; you must not work in groups. Do not rely on friends or tutors to do your work for you. You must not copy any other person's work in any manner (electronically or otherwise), even if this work is in the public domain or you have permission from its author to use it and/or modify it in your own work (obviously, this prohibition does not apply to source code supplied by instructors explicitly for this purpose). Furthermore, you must not give a copy of your work to any other person.

Policy on final grades
I will use the same rules and formula for calculating the final grade for everyone. I understand that your performances may be influenced by many factors, possibly out of your control. However, that is the only way we can be fair. One exception will be medical exceptions. In that case, I will require a medical note, which has to be also reported to McGill, and to be informed as early as possible. Failure to comply to these rules, may results in the impossibility to invoke a medical exception.

Policy on Assignments
There will be four assignments consisting of writing Java programs. It is very important that you complete all assignments, as this is the best way to learn the material. By working hard on the assignments, you will gain essential experience needed to solve problems on the midterm and final examinations. To receive full grades, assignments (as well as all other course work) MUST represent your own personal efforts (see the section on Plagiarism Policy above). Late Policy: Late assignments will be deducted 10% each day or fraction thereof for which they are late, including weekend days and holidays; that is, assignments that are between 0 and 24 hours late will be deducted 10%, assignments that are between 24 and 48 hours late will be deducted 20%, and so on. Assignments submitted more than 2 days after the deadline will not be accepted, nor graded, and will therefore receive a grade of 0%. Assignment submission will always take place on myCourses. Instructors and TAs will discuss how to use it during the lectures and tutorials, but every student is responsible for verifying that their submissions are successful. Assignment marks will also be posted on myCourses. It is your responsibility to check that the marks are correct and to notify your section instructor of any errors or missing marks. If you believe that your assignment was graded incorrectly, you should first email the TA who marked your assignment, Emails will be posted on the course web-page. If you and the TA cannot resolve the discussion, then you should contact your instructor. The instructors reserve the right to modify the lateness policy for a particular assignment; any such modifications will be clearly indicated at the beginning of the relevant assignment specifications. Plan appropriately and do not submit to myCourses only minutes before the assignment deadline. Take care, programming assignments are notoriously time-consuming and individual exceptions to the lateness policy will not be granted without appropriate justification submitted in writing and supported by documentary evidence.

Use of French in assignments and contest
In accordance with McGill University’s Charter of Students’ Rights, students in this course have the right to submit in English or in French any written work that is to be graded.

McGill policies
McGill University values academic integrity. Therefore, all students must understand the meaning and consequences of cheating, plagiarism and other academic offenses under the Code of Student Conduct and Disciplinary Procedures. See this link for more information.


If you have any additional question, you can contact the instructor:

David Becerra
3630 University Street, Room 3150, Montreal QC H3A 0C6

Based on a template from