ITI 1121. Introduction to Computing II – subtitle
ITI 1121. Introduction to Computing II
Course requirements
by
Marcel Turcotte
Version January 6, 2020
Preamble
Preamble
Learning objectives
Learning objectives
Inform about the course requirements.
Explain the general learning objectives in this course.
Know the university regulations on academic fraud.
Readings:
This document, as well as these:
Plan de cours
Academic Integrity
1 53
http://www.site.uottawa.ca/~turcotte/teaching/iti-1121/syllabus/index.pdf
https://www.uottawa.ca/vice-president-academic/academic-integrity
Preamble
Plan
Plan
1 Preamble
2 Syllabus
3 Academic integrity
4 Content
5 Epilogue
6 Prologue
2 53
Marcel Turcotte : short bio!
1965- Born in Montréal
1995 Ph. D. in Computer Science, Université de Montréal
1995–97 University of Florida (U.S.), Chemistry Department
1997–00 Imperial Cancer Research Fund, London, England
2000- University of Ottawa
2006–08 Coordinator for the coop program (computer science)
2010–11 Coordinator master in bioinformatics
2012–18 Vice-dean of undergraduate studies
3 53
Source: blog.f1000.com
F1000Prime Faculty Launch: Bioinformatics, Biomedical Informatics & Computational Biology
Marcel Turcotte : short bio!
1. RNA and DNA, regulation of gene expression, secondary structure, pattern inference,
text algorithmic
2. Software: MC-Sym (co-author), eXtended-Dynalign, Profile-Dynalign, Seed,
ACSEA, ModuleInducer, RiboFSM, MotifGP, Seedw
3. Designing algorithms and data structures, applied artificial intelligence and machine
learning
5 53
Source: QIAGEN/CLC bio
https://www.qiagenbioinformatics.com
Syllabus
Course content
Computer
Architecture
Object-oriented programming
Abstract Data Types
(ADT)
7 53
Course content
Computer
Architecture
Object-oriented programming
Variables
Object
Class
Interface
Inheritance
Generic
Exception
Abstract Data Types
(ADT)
Stack
Queue
List
Binary Search Tree
Memory
CPU
Compilation
Program
execution
8 53
Course content
Computer
Architecture
Object-oriented programming
Variables
Types
Local
Parameters
Instance variables
Class variables
Object
Instance variables
Instance methods
Encapsulation
Class
Class variables
Class methods
Nested classesInterface
Inheritance
Generic
Exception
Abstract Data Types
(ADT)
ArrayStack
DynamicArrayStack
LinkedStack
Applications
Stack
Queue
LinkedQueue
CircularQueue
Applications
List
ArrayList
SinglyLinkedList
DoublyLinkedList
CircularList
Recursion
Iterator
Binary Search Tree
Memory
CPU
Compilation
Program
execution
Reading
Writing
Fetch-Execute-Cycle
9 53
Course content
Computer
Architecture
Object-oriented programming
Variables
Types
Primitive
Reference
Local
Parameters
Instance variables
Class variables
Object
Instance variables
Instance methods
Encapsulation Visibility modifiers
Class
Class variables
Class methods
Nested classes
State
Interface
Inheritance
Generic
Exception
Abstract Data Types
(ADT)
ArrayStack
DynamicArrayStack
LinkedStack
Applications
System
Syntactical Analysis
Stack
Queue
LinkedQueue
CircularQueue
Applications
Simulations
Systems
State-space-search
List
ArrayList
SinglyLinkedList
DoublyLinkedList
CircularList
Recursion
Iterator
Binary Search Tree
Memory
CPU
Compilation
Program
execution
Reading
Writing
Fetch-Execute-Cycle
10 53
Take note!
“Professors must supply a course syllabus during the first meeting with the students
at the beginning of each course.” (Academic Regulation 8.5)
The course syllabus will remain unchanged for the rest of the semester!
12 53
Evaluations
Examen midterm: 25 %
Examen final: 40 %
Assignments (4): 25 %
Laboratories (10–12): 10 %
You must get at least 50% on the exams to pass the course. Failure on the exams will
result in failure on the course!
13 53
Examinations
Midterm Sunday March 1, 2020, 10:00 – 12:00
Closed books
Final Closed books
14 53
Academic integrity
This applies to everybody!
Last year, over 40 students were alleged to have committed an academic fraud for
their first assignment. . .
16 53
This applies to everybody!
. . . and second assignment!
Each link shows the relationship between a pair of submissions.
The labels indicate the degree of similarity and the number of lines of code (in
parentheses).
17 53
Academic integrity
Academic fraud: Any act by a student that may result in a distorted academic
evaluation for that student or another student.
plagiarising or cheating in any way;
submitting work not partially or fully the student’s own;
submitting the same work or a large part of the same piece of work in more
than one course;
falsifying or misrepresenting an academic evaluation, using a forged or altered
supporting document or facilitating the use of such a document;
taking any action aimed at falsifying an academic evaluation.
Regulation:
https://www.uottawa.ca/administration-and-governance/
academic-regulation-14-other-important-information
18 53
https://www.uottawa.ca/administration-and-governance/academic-regulation-14-other-important-information
https://www.uottawa.ca/administration-and-governance/academic-regulation-14-other-important-information
Good practices
Never publish your source code on GitHub publicly before the deadline for the
submission of the assignment.
You can publish your solution after the deadline.
However, you should withdraw your University of Ottawa student number, because
someone else could misuse this information.
You also need to be careful, in some cases you may be publishing source code that
isn’t yours.
In particular, you could release source code that was developed by the instructors.
19 53
You’re the victim
The first victim in copying someone else’s solution is you.
You won’t learn “how to learn.”
Maybe you understand the solution you copied.
However, you won’t have been able to learn how to create those solutions in the
first place.
Of course, that will impact your ability to pass the exams.
But it will also impact your ability to find your dream job.
Interviews for software engineering and computer science positions are very thorough.
You’ll be asked to solve problems that may in fact be similar to the ones we have in
our assignments.
20 53
Be extremely careful, in some cases, the
students didn’t know their solution had
been copied, which makes this message
important for everyone.
Academic fraud: scenarios
Raise your hand if you intend to cheat in this class!
Someone’s asking for access to your assignment.
This person is a friend.
It’s too late. This poor soul won’t finish in time. . .
You’re stuck.
You choose to collaborate with one or more teams. . .
The files are forwarded to the representative of the Dean: the student gets 0, for this
assignment, for all assignments, for the course, to take an ethics course,
expulsion from the university, etc.
22 53
Analogy with high-level sports
23 53
Policy on the use of electronic devices
24 53
Content
Assignments
25 53
Assignments
26 53
Assignments
27 53
Assignments
28 53
Assignments
29 53
Samuel Bostock 2010 Liam Shea Williams 2010
Quentin Smith 2011
30 53
Olivier Gagnon 2012
Olivier Gagnon 2012 (LVM Modifiée)
31 53
Liban Osman 2012
Liban Osman 2012
32 53
Matthew Horton 2012
Matthew Horton 2012
Matthew Horton 2012
33 53
Jonathan Ermel 2012
Jonathan Ermel 201234 53
William Pearson 2014
Matthew Pollex 2015
Matthew Pollex 2015 (AI Pong)
36 53
Learning objectives of the course
The main objective of the course is to learn how to implement and use abstract
data types
In particular, lists, stacks, queues and binary search trees.
In order to develop elegant and robust solutions, knowledge of the object-oriented
programming, encapsulation, inheritance and polymorphism are necessary.
We’ll also be learn about I/O, user interfaces, and JUnit.
37 53
Difficulties
The high-level concepts are simple!
The main difficulty consists of translating the high-level ideas into a concrete
implementation!
38 53
Difficulties
Google in Growth Mode in Montreal
La Presse, published February 1, 2011.
(https://bit.ly/2rYp9TV)
“(. . . ) very strong programming skills (. . . ) We don’t just want people who have
ideas. We want someone who can sit down and code.”
“The directive we’ve received is to hire as many good employees as we can recruit.
There is no quota on the quantity, but we have a very high quality threshold.”
“The teams from Toronto, Ottawa and Waterloo will also benefit from a jolt of the
accelerator.”
39 53
https://bit.ly/2rYp9TV
We tend to look at the teacher/learner relationship the wrong way
around: it’s not that the teacher teaches; it’s that the student
learns.
Pragmatic Thinking and Learning — Andy Hunt
Difficulties
Don’t cut-and-paste source code, rewrite the examples by yourself!
Do all the assignments!
Do all the laboratories!
Keep a positive attitude towards programming!
Smile!
41 53
Difficulties (continued): a section from 2016
20 19% A+
4 4% A
11 10% A-
3 3% B+
5 5% B
6 6% C+
3 3% C
1 1% D+
1 1% D
6 6% E
3 3% F
4 4% EIN
3 3% ABS
38 35% Abandon
42 53
Textbook
E. B. Koffman, P. A. T. Wolfgang.
Data Structures: Abstraction and
Design Using Java. John Wiley & Sons,
3e edition, 2016.
43 53
Textbook
E. B. Koffman and P. A. T. Wolfgang.
Data Structures: Abstraction and
Design Using Java. John Wiley & Sons,
2e edition, 2010.
44 53
(Alternative) textbook
Could you recommend an affordable
alternative?
E. Koffman and P. Wolfgang (2005)
Objects, Abstraction, Data Structures
and Design: Using Java Version 5.0.
Wiley, 880 pages. (ISBN:
0-471-69264-6)
45 53
(Alternative) textbook
Could you recommend an affordable
alternative?
E. Koffman and P. Wolfgang (2005)
Objects, Abstraction, Data Structures
and Design: Using Java. Wiley, 864
pages. (ISBN: 0-471-46756-1)
46 53
(Alternative) textbook
Could you recommend an even more affordable alternative?
Java Structures: Data Structures in Java for the Principled Programmer by Duane A.
Bailey
www.cs.williams.edu/∼bailey/JavaStructures/Book.html
47 53
http://www.cs.williams.edu/~bailey/JavaStructures/Book.html
Book on Java
I am new to programming in Java!
P. Sestoft. Java Precisely. The MIT
Press, 3e edition, August 2016.
(∼ 40 $)
48 53
Epilogue
Netiquette
Piled Higher and Deeper by Jorge Cham www.phdcomics.com
title: “How To Write An E-mail To Your Instructor Or Teaching Assistant” – originally published 4/22/2015
49 53
Prologue
Summary
You need to get at least 50% for the exam portion of the grades.
Do all the assignments.
Do all laboratories.
Don’t succumb to plagiarism.
50 53
Next Module
Introduction to object-oriented programming
51 53
References I
E. B. Koffman and Wolfgang P. A. T.
Data Structures: Abstraction and Design Using Java.
John Wiley & Sons, 3e edition, 2016.
E. B. Koffman and Wolfgang P. A. T.
Data Structures: Abstraction and Design Using Java.
John Wiley & Sons, 2e edition, 2010.
P. Sestoft.
Java Precisely.
The MIT Press, 3e edition, 2016.
52 53
Marcel Turcotte
Marcel.
School of Electrical Engineering and Computer Science (EECS)
University of Ottawa
53 / 53
Marcel.
Preamble
Learning objectives
Plan
Syllabus
Academic integrity
Content
Epilogue
Prologue