ladan tahvildari, peng, smieee - university of...
TRANSCRIPT
Ladan Tahvildari, PEng, SMIEEE Associate Professor
Software Technologies Applied Research (STAR) Group
Dept. of Elect. & Comp. Eng.
University of Waterloo
ECE250: Algorithms and Data Structures
Welcome
Lecture 1 ECE250 2
Instructor
Ladan Tahvildari, PEng, SMIEEE Associate Professor Software Technologies Applied Research Group http://www.stargroup.uwaterloo.ca/ Email: [email protected] Room: EIT-4136 Office Hours: Tuesday 12:30-1:30pm
Lecture 1 ECE250 3
Lab Instructor
l Tiuley Alguindigue Ø Email: [email protected] Ø Room: E2-2360A Ø Office Hours: By Appointment
Lecture 1 ECE250 4
Teaching Assistants l Mahsa Emami Taba
Ø PhD Candidate Ø Email: [email protected] Ø Room: DC-3574
Ø Task: Marking Assignments
Ø Office Hours: ü Monday: 12:30-1:30pm ü Wednesday: 12:30-1:30pm
Teaching Assistants l Jun Zhao
Ø Master’s Student Ø Email: [email protected] Ø Room: DC-3574
Ø Task: Covering Tutorials
Ø Office Hours ü Mondays 5:30-6:30pm ü Thursdays 12:30-1:30pm
Lecture 1 ECE250 5
Lecture 1 ECE250 6
Teaching Assistants l Hua Fan
Ø PhD Student Ø Email: [email protected]
Ø Task: Lab/Project TA
Lecture 1 ECE250 7
Teaching Assistants
l Olivier Nguyen
Ø Master’s Student Ø Email: [email protected]
Ø Task: Lab/Project TA
Lecture 1 ECE250 8
About You J l 2A EE/CE Students; Class 2021
l You have taken – ECE150: Fundamentals of Programming
• so you know how to program
– ECE155: Engineering Design with Embedded Systems • so you know the engineering design and analysis principles
– MATH117: Calculus 1 for Engineering • so you know polynomial, exponential, and logarithmic functions
Lecture 1 ECE250 9
About This Course J
l Algorithms and Data Structures
l Focus on ADTs (Abstract Data Type)
l Considerable amount of Math
Lecture 1 ECE250 10
Course Objectives
l To study effective and efficient data structures and algorithms in a language-independent setting
l To develop an appreciation of techniques for constructing algorithms and data structures
l To build upon the notion of levels of abstraction
l To give the students greater experience in program design
l To emphasize on mathematical aspects of program efficiency
Lecture 1 ECE250 11
General Information l Recommended Books Ø Cormen, Leiserson, Rivest, Stein (CLRS), Introduction to Algorithms, MIT Press, 2009. Ø Mark Allen Weiss, Data Structures and Algorithm Analysis in C++, Addison Wesley, 2014.
l Course Web Site: http://stargroup.uwaterloo.ca/~ece250
Note: First Tutorial; Monday, September 11, 2017
Lecture Ø Tue Wed Thu; 10:30-11:20am; DC-1350
Extra Lecture Ø Monday; September 11 & 25; October 30; B1-271
Tutorial Ø Monday; 4:30-5:20pm; MC-2065
Lecture 1 ECE250 12
Course Topics
l Asymptotic and Algorithm Analysis (5hrs) l Elementary Data Structures (2hrs)
l Hashing (3hrs)
l Search Trees, Balanced BSTs, B-Trees (7hrs)
l Heaps, Priority Queues (2hr) l Sorting Algorithms (3hrs)
l Algorithmic Paradigms (3hrs) l Graphs (7hrs) l NP-Completeness (3hrs)
Lecture 1 ECE250 13
Course Mark Weight
Final Exam* 50 Midterm* 20 Homework Assignments** 10 Lab Projects** 20
Note: To pass the course, you must achieve a weighted average of at least 50 for the exams* AND a weighted average of at least 50 for the lab projects and assignments**.
Lecture 1 ECE250 14
Homework Assignments
l There will be three homework assignments during the term: – A1: Wednesday, September 27 (weight 3%) – A2: Wednesday, November 1 (weight 3%) – A3: Wednesday, November 29 (weight 4%)
l All are due @11pm and should be submitted through LEARN
l Late submissions are NOT allowed
NOTE: Full Description; Course Web Site
Lecture 1 ECE250 15
Lab Projects
l There will be four lab projects during the term: – P1: Sunday, October 8 (weight 3%) – P2: Sunday, October 22 (weight 5%) – P3: Sunday, November 12 (weight 6%) – P4: Sunday, November 26 (weight 6%)
l All are due @11pm and should be submitted through LEARN
l Late submissions are NOT allowed
NOTE: Full Description; Course Web Site and LEARN
Lecture 1 ECE250 16
ECE250 Labs
l Goal: To provide support for completing course projects l Attending lab (RCH-108) helps you to complete your course
projects successfully. l Lab Topics:
– Lab 0: Arrays in C++ (September 14 & 15; September 19 & 20) – Lab 1: Stacks/Queues (September 28 & 29; October 3 & 4) – Lab 2: Hash Tables (October 17-20) – Lab 3: Trees (November 7-10) – Lab 4: Graphs (November 21-24)
NOTE: Full Description; LEARN
Lecture 1 ECE250 17
l You will be using the C++ programming language to demonstrate your knowledge in this course – C++ developed by Bjarne Stroustrup starting in 1979 at Bell Labs
l This course does not teach C++ programming
l Sources of help in C++ are: – The first two weeks of tutorials (September 11 & 18) – Online tutorials:
• http://www.tutorialspoint.com/cplusplus/ • http://www.cplusplus.com/ • http://www.learncpp.com/
– The Teaching Team: lab instructor, TAs, course instructor
C++
Lecture 1 ECE250 18
l You will also be exposed to the Unix environment – All the projects will be marked in Unix
l Unix Tutorial: – http://www.tutorialspoint.com/unix/ – http://www.unixtutorial.org/
l You can develop your code on Windows or Apple, but you are responsible for testing your code on Unix
Unix
Lecture 1 ECE250 19
Plagiarism
l Projects will be submitted to MOSS (Measure Of Software Similarity) for plagiarism detection – MOSS was hosted on a Stanford University server and is based on the paper
“Winnowing: Local Algorithms for Document Fingerprinting” by Saul Schleimer, Daniel S. Wilkerson, and Alex Aiken
l Recommendations to avoid any potential plagiarisms: – If you viewed another code (from books or lecture notes), you must include a reference
and cite it in your project
– You can not share code with any other students by transmitting completed functions to your peers
– You may discuss projects together and help another student debug his or her code; however, you cannot dictate or give the exact solution
The First Quiz
Pre-Assessment Quiz
on C++ Concepts and Programming
Lecture 1 ECE250 20