EECE 2560: Fundamentals of Engineering Algorithms Department of Electrical and Computer Engineering Fall 2020, MWR 10:30 am - 11:35 am, Kariotis Hall 304 Syllabus Instructor: Ningfang Mi E-mail: ningfang@ece.neu.edu Virtual Office: https://northeastern.zoom.us/j/93240626077 Office hours: Monday noon-1pm or by appointment Teaching Assistant: Danlin Jia E-mail: jia.da@husky.neu.edu Virtual Office: https://northeastern.zoom.us/j/97856445491?pwd=S0s2WE53bitTVzV5SG9LcWpoNUdldz09 Office hours: Wednesday 3-4pm and Thursday 3-4pm CONTENT In EECE 2560, you will study a collection of classic algorithmic techniques that are useful for solving engineering problems. These algorithms include sorting algorithms (e.g., selection sort, quicksort, heapsort), recursive backtracking search, tree algorithms (traversals, binary search algorithms), and graph algorithms (traversals, spanning trees forests, shortest paths, etc.). The course covers exhaustive approaches, divide and conquer, greedy algorithms, backtracking, branch and bound, and iterative improvement. We will also cover algorithm analysis, asymptotic notation, and recursion. Data structures covered include vectors, stacks, queues, trees, graphs, priority queues, hash tables and heaps. TEXTBOOKS (Optional) • Introduction to Algorithms, by Cormen, 3rd Edition, 2009. Other References: • Introduction to the Design and Analysis of Algorithms by Levitin, 2nd Edition, Addison Wesley, 2007. • Data Structures With C++ Using STL by Ford and Topp, 2nd Edition, Prentice Hall, 2002. • Problem Solving, Abstraction, and Design Using C++ by Friedman and Koffman, 5th Edition, Addison-Wesley, 2006. PREREQUISITES To take this course, you must: 1. know how to write programs in C++ using arrays, loops, conditional statements, functions, parameters, and simple I/O, 2. know how to use object-oriented techniques, including classes, constructors, destructors, copy-constructors, public and private members, reference parameters, and function overloading, 3. know how to use introductory data structures, including arrays, pointers, vectors, stacks and queues, 4. know how to translate high-level descriptions of algorithms in pseudo-code into working C++. STRUCTURE AND REQUIREMENTS In this course, • There will be no midterm or final exam. • There will be around 5 programming projects (may vary depending on time), which represent 50% of your final grade. Every about two weeks, I will introduce a new project. Lectures will cover the algorithms and data structures needed to solve the problem, and I will answer your questions about the assignment. • Most projects will have two parts. In the first part, you will implement the basic infrastructure, i.e., the classes and data structures, for the project. In the second part, you will develop, implement and evaluate algorithmic techniques. • Projects can be completed in groups of two students. There will be one project submission for each group. However, each student must completely understand everything about the solutions they turn in. • There will be a weekly quiz/homework, which represent 50% of your final grade. Each will evaluate your understanding of the material covered on past projects and lectures. • Lectures will cover much, but not all, of the required material for the course. There will be reading assignments that accompany each lecture. Reading assignments will be posted and you are also responsible for this material. • You are strongly encouraged to attend all lectures, complete all projects, and regularly do the reading. • We will also use Piazza discussion forum (https://piazza.com/) where you should participate in discussions. The instructor and the TA will be available to answer questions and give you feedback on your work. GRADING Your final grade for the class will be based on the following breakdown: • Projects 50% • Quizzes/Homework 50% Quizzes, homework, and projects are graded on an absolute scale. The class is not graded on a curve. • The lowest one of your quiz grades will be dropped. But all projects grades will be considered for the final grade. • Grades are determined from the total points as follows: 95-100: A; 90-94: A-; 85-89: B+; 80-84: B; 75-79: B-; 70-74: C+; 60-69: C; 50-59: C-; < 50: F. • Your grades are rounded to the closest integer value when computing your final grade. POLICIES • All assignments have fixed due dates and times, by which the assignment files have to be uploaded to Blackboard. No late submission will be accepted (the Canvas link for the upload will disappear after the due date/time). • Class attendance is required. If you miss a class, you are responsible for all material that was covered, announcements that were made, and handouts that were distributed in class. 2 • If you miss a quiz or a homework, you will not be allowed to retake it. All requirements must be completed during the semester. No incomplete will be given. • You are encouraged to discuss assignments with one another, but all writing of code must be done individually or within your group. You must not look at another student’s code, or allow another student to see your code. Copying someone else’s work and presenting it as your own, or submitting the same solution as someone else, is not allowed. • If you have a question about the grading of a homework problem you should first contact the teaching assistant directly. If the issue is not resolved to your satisfaction, please contact me. • Changes to project and quiz/homework scores will only be made in the first week after the graded work has been returned to you. • You should check the class website on Canvas daily for announcements and other information. • You must adhere to Northeastern University’s Policy on Academic Integrity. If you violate this policy will receive a lower grade in the course, and may receive an F. You will also be referred to Northeastern’s Office of Student Conduct where penalties range from deferred suspension to expulsion from the university. • Exceptions to any course policy may be made if you have a personal emergency that prevents you from participating in the course. In this case you must make arrangements with me as soon as possible, preferably within 24 hours. OTHERS • Recording of Classes Classes will be recorded to enable all students to review material covered in synchronous classes. Please contact me if you have any concerns. • Academic Integrity A commitment to the principles of academic integrity is essential to the mission of Northeastern University. The promotion of independent and original scholarship ensures that students derive the most from their educational experience and their pursuit of knowledge. Academic dishonesty violates the most fundamental values of an intellectual community and undermines the achievements of the entire University. As members of the academic community, students must become familiar with their rights and responsibilities. In each course, they are responsible for knowing the requirements and restrictions regarding research and writing, examinations of whatever kind, collaborative work, the use of study aids, the appropriateness of assistance, and other issues. Students are responsible for learning the conventions of documentation and acknowledgment of sources in their fields. Northeastern University expects students to complete all examinations, tests, papers, creative projects, and assignments of any kind according to the highest ethical standards, as set forth either explicitly or implicitly in this Code or by the direction of instructors. Go to http://www.northeastern.edu/osccr/academic-integrity-policy/ to access the full academic integrity policy. • Student Accommodations Northeastern University and the Disability Resource Center (DRC) are committed to providing disability services that enable students who qualify under Section 504 of the Rehabilitation Act and the Americans with Disabilities Act Amendments Act (ADAAA) to participate fully in the activities of the university. To receive accommodations through the DRC, students must provide appropriate documentation that demonstrates a current substantially limiting disability. For more information, visit http://www.northeastern.edu/drc/getting-started-with-the-drc/. 3 • Diversity and Inclusion Northeastern University is committed to equal opportunity, affirmative action, diversity and social justice while building a climate of inclusion on and beyond campus. In the classroom, members of the University community work to cultivate an inclusive environment that denounces discrimination through innovation, collaboration and an awareness of global perspectives on social justice. It is my intention that students from all backgrounds and perspectives will be well served by this course, and that the diversity that students bring to this class will be viewed as an asset. I welcome individuals of all ages, backgrounds, beliefs, ethnicities, genders, gender identities, gender expressions, national origins, religious affiliations, sexual orientations, socioeconomic background, family education level, ability – and other visible and nonvisible differences. All members of this class are expected to contribute to a respectful, welcoming and inclusive environment for every other member of the class. Your suggestions are encouraged and appreciated. Please visit http://www.northeastern.edu/oidi/ for complete information on Diversity and Inclusion. • TITLE IX Title IX of the Education Amendments of 1972 protects individuals from sex or gender-based discrimination, including discrimination based on gender-identity, in educational programs and activities that receive federal financial assistance. Northeastern’s Title IX Policy prohibits Prohibited Offenses, which are defined as sexual harassment, sexual assault, relationship or domestic violence, and stalking. The Title IX Policy applies to the entire community, including male, female, transgender students, faculty and staff. In case of an emergency, please call 911. Please visit www.northeastern.edu/titleix for a complete list of reporting options and resources both on- and off-campus 4