\setcounter{numTAs}{1} \setcounter{totalSections}{1} \def\secNum{{"001",""}} \def\tenSchFileName{{"",""}} \def\classTime{{"MWF 10:40 am - 11:30 am",""}} \def\classRm{{"Drosdick 031",""}} \def\classLive{{"",""}} \def\classInstructor{{"Dr. Sarvesh Kulkarni",""}} \def\classInstrContact{{"https://www1.villanova.edu/university/engineering/academic-programs/electrical-computer/directory/biodetail.html?mail=sarvesh.kulkarni@villanova.edu&xsl=bio_long",""}} \def\classInstrOffHrs{{"MW 11:30 am - 1:00 pm",""}} \def\classInstrLive{{"",""}} \def\TA{{{"Kieran Seven",""},{""}}} \def\TAEmail{{{"kseven@villanova.edu",""},{""}}} \def\TAOffHrs{{{"Tue 11:45 am - 12:45 pm, Thu 5:00 - 5:30 pm",""},{""}}} \def\TARoom{{{"Drosdick 111 (Wind Tunnel Room)",""},{""}}} \newcommand\semester{Fall 2025} \newcommand\rsemester{202620} \newcommand\courseNum{ECE 2160} \newcommand\courseName{C++, Algorithms \& Data Structures} \newcommand\courseCoordinator{Dr. Sarvesh Kulkarni} \newcommand\credits{3} \newcommand\contactHrs{3} \newcommand\lecture{1} \newcommand\lab{0} \newcommand\undergradCourse{1} \newcommand\isFreshmanCourse{0} \newcommand\isCustomElecPolicy{0} \newcommand\AIPolicyExists{1} \newcommand\isClassLive{0} \newcommand\isLabLive{0} \newcommand\meetingMiscExists{0} \newcommand\isClassInstrLive{0} \newcommand\isLabInstrLive{0} \newcommand\instrMiscExists{0} \newcommand\hasTARoom{1} \newcommand\meetingDesc{(Three 50-minute lectures, weekly)} \newcommand\meetingMisc{Special notes on meeting info go here, if specified} \newcommand\instructorMisc{Special notes on instructor(s), TA(s) go here, if specified} \newcommand\textBookExists{1} \newcommand\textBookReqd{1} \newcommand\textBookMiscExists{1} \newcommand\referencesExist{0} \newcommand\txtBkAuthExists{0} \newcommand\txtBkPublExists{1} \newcommand\txtBkYrExists{1} \newcommand\txtBkISBNExists{1} \newcommand\textBookTitle{ECE 2160: C++, Algorithms \& Data Structures} \newcommand\textBookAuth{} \newcommand\textBookPub{zyBooks} \newcommand\textBookYr{2025} \newcommand\textBookISBN{979-8-203-98855-3} \newcommand\supplMaterials{Slides and notes posted on Blackboard} \newcommand\refPapers{References go here, if specified} \newcommand\textBookMisc{You should have been automatically enrolled in Villanova's Textbook Access Program that allows you to access the course e-textbook AT NO EXTRA CHARGE. You should have received an email from the Bookstore with instructions on how to access this e-textbook. Please DO NOT pay to subscribe. You must go to the campus book store and obtaining your personal textbook access code; follow the instructions on that sheet to create your account on the ZyBooks web site. Note that this is the same textbook that you will be using for your ECE 2161 (lab) course. When you sign up on the ZyBooks web site, be sure to use your ECE 2160 section number, not your ECE 2161 section number. If, you have opted out of Villanova's Textbook Access Program, then you will need to \textbf{subscribe} to the course e-textbook here (Cost: \$89): \vspace{-0.07in} \begin{enumerate} \setlength{\itemsep}{-3pt} \item Sign in or create an account at learn.zybooks.com \item Enter the zyBook code: \textbf{VILLANOVAECE2160KulkarniFall2025} \item Subscribe \end{enumerate} When you sign up on the ZyBooks web site, be sure to use your ECE 2160 section number, not your ECE 2161 section number.} \newcommand\catalogDesc{C++ classes access rules, inheritance, friends, abstract classes, templates, passing parameters by value, by reference, polymorphism in functions and operators, static and dynamic binding, searching, sorting; pointer implementation of lists, stacks, queues, trees, analysis of algorithms; P, NP, Undecidable problems.} \newcommand\preReqs{ECE 1260 and ECE 1261} \newcommand\coReqs{ECE 2161} \newcommand\coreRequirement{Required for BS CpE} \newcommand\courseExpectation{On conclusion of this course, students will: ~~1. Acquire good programming habits and be proficient in C++ programming using object oriented techniques, ~~2. Recognize the importance of, and select appropriate application-specific data structures in programs, ~~3. Be able to write modular programs using the mechanisms of class inheritance and composition to implement various user-defined data structures in C++ using low-level pointer constructs. ~~4. Learn the techniques of code-reuse, ~~5. Analyze the asymptotic time complexity of an algorithm and understand its impact on execution time, ~~6. And thus, select/design computationally efficient algorithms that result in computationally efficient programs.} \newcommand\ABETOutOneA{0} \newcommand\ABETOutOneB{0} \newcommand\ABETOutTwoA{0} \newcommand\ABETOutTwoB{0} \newcommand\ABETOutTwoC{0} \newcommand\ABETOutTwoD{0} \newcommand\ABETOutThree{1} \newcommand\ABETOutFourA{0} \newcommand\ABETOutFourB{0} \newcommand\ABETOutFourC{0} \newcommand\ABETOutFive{0} \newcommand\ABETOutSixA{0} \newcommand\ABETOutSixB{0} \newcommand\ABETOutSevenA{1} \newcommand\ABETOutSevenB{0} \newcommand\covTopics{\item Introduction to C++: Abstract data types, classes, members, objects, inheritance, templates, polymorphism and pointers \item Asymptotic complexity and running time analysis of algorithms \item Pointer and dynamic variables: Concepts and usage of pointers, pointer parameters to/from functions, pointer arithmetic, pointer-style array representation, dynamic memory allocation \& deallocation \item Lists, Stacks, Queues and Binary Trees: Implementation using arrays, pointers, and operations (insertion, deletion, search) on them \item Sorting Algorithms: Bubble sort, Merge Sort \item If time permits: Basic concepts in the hardness and computability of problems - P, NP, NP-Complete and Undecidable classes of problems} \newcommand\isScheduleExternal{0} \newcommand\isScheduleCommon{1} \newcommand\scheduleRows{18} \newcommand\scheduleCols{3} \newcommand\scheduleHeight{1} \newcommand\schedule{\begin{table}[h!] \centering \caption*{Tentative Schedule for \textbf{All Sections}} \vspace{0.05in} {\renewcommand{\arraystretch}{1.5} \small \begin{tabularx}{\linewidth}{c|c|X} \toprule \large \textbf{Week \#} & \large \textbf{Dates} & \large \textbf{Topics of Study}\\ \midrule \midrule 1 & 8/25 -- 8/29 & Review of C; program development concepts and pitfalls\\ 2 & 9/1 -- 9/5 & \textbf{9/1: Labor Day break;} Review of C (contd.); The compilation process; software life cycle models; ADTs, classes\\ 3 & 9/8 -- 9/12 & Class members and object instantiation; Functions: outside and within classes, default parameters, function overloading; Constructors: with and without default parameters\\ 4 & 9/15 -- 9/19 & \textcolor{red}{Quiz 1 - Mon, 9/15} Destructors; operator overloading; precedence \& associativity of operators; templates for classes \& functions\\ 5 & 9/22 -- 9/26 & Program organization; member access specifiers; Friend functions \& classes; inheritance: class hierarchies\\ 6 & 9/29 -- 10/3 & \textcolor{red}{Quiz 2 - Mon 9/29} Member access rules; static \& dynamic function binding; abstract and concrete classes; Pointer \& dynamic variables: concepts \& syntax\\ 7 & 10/6 -- 10/10 & Pointers: visualization, manipulation, passing pointers to/from functions; arrays in pointer notation; allocating and de-allocating dynamic arrays \textcolor{red}{Midterm i.e. Exam I - Fri, 10/10}\\ 8 & 10/13 -- 10/17 & \textbf{Fall break}\\ 9 & 10/20 -- 10/24 & Asymptotic time complexity of algorithms: Big-O, Big-$\Omega$ and Big-$\Theta$, \& solved examples\\ 10 & 10/27 -- 10/31 & Asymptotic time complexity: solved examples (contd.); pointer-implementation of singly-linked lists (SLLs)\\ 11 & 11/3 -- 11/7 & \textcolor{red}{Quiz 3 - Mon, 11/3}; SLLs (contd.)\\ 12 & 11/10 -- 11/14 & Doubly-linked Lists (DLLs); circular lists; stacks; queues\\ 13 & 11/17 -- 11/21 & \textcolor{red}{Quiz 4 - Mon, 11/17}; Binary trees \& binary search trees (BSTs)\\ 14 & 11/24 -- 11/28 & \textcolor{red}{Exam II - Mon, 11/24}; \textbf{11/\{26-28\}: Thanksgiving break}\\ 15 & 12/1 -- 12/5 & BST operations: BST operations: breadth-first \& depth-first traversals, node insertion, node deletion\\ 16 & 12/8 -- 12/12 & \textcolor{red}{Quiz 5 - Mon, 12/8}; P, NP and Undecidable problem classes; topics review on final class day (Wed, 12/10); \textbf{Tue, 12/9: Deemed Fri class day}\\ 17 & 12/17 & \textcolor{red}{12/17: Comprehensive Final Examination (Optional) from 8:30 am - 10:30 am in Drosdick 031, i.e., in our usual classroom} \\ \bottomrule \end{tabularx} } \end{table}} \newcommand\gradingPolicy{\noindent {\bf Homework}: 35\% weightage ... 20\% for pre-class, 15\% for after-class\\ {\bf Quizzes}: best four (of five) quizzes, 20\% total weightage\\ {\bf Two examinations}: 45\% weightage total\\ {\bf Comprehensive Final Exam} (Optional): 45\% weightage (This score replaces the above two examination scores ONLY IF you score higher)\\ \vspace{-0.05in} A single final composite score (out of 100) will be computed from the above weighted components. This composite score will be converted to a letter grade as follows: A student with a composite score of 92+ will receive an \textit{A} grade while a student with a composite score of less than 50 will receive an \textit{F} grade. A grading curve will apply to all scores between 50 and 92 that reflects a class average of \textit{B}.\\ \vspace{-0.05in} Before the reading day, you will be assigned a ``provisional'' letter grade for the course. If you are satisfied with your provisional letter grade, you do not need to take the comprehensive final examination. Your provisional grade will then automatically become your final grade. However, should you wish to improve your final grade, you must expressly inform the instructor of your intent to take the comprehensive final examination. Your final letter grade will reflect the higher of these two grades: 1. your provisional letter grade, and 2. your letter grade computed by replacing the two examinations with the comprehensive final examination. Thus, your final letter grade can never be lower than your provisional letter grade.} \newcommand\HWandLabPolicy{\noindent {\bf {\em Class}}:\\ \noindent There are two kinds of HW assignments: pre-class HW, and post-class HW. Pre-class HW assessment will be online and automatic - you need to only complete your reading assignments and answer questions posed by the online textbook BEFORE class. Post-class HW must be completed using the software development kit (SDK) provided, and the files must be uploaded to ``Blackboard" (the course management software) before the posted deadline. For HW assignments that do not require programming, you may handwrite your solutions and either hand them in, or upload a single scanned pdf file before the posted deadline. Late HW assignments will be assessed a 10\% penalty per day, up to the posted cut-off date. After the cut-off date, HW assignments WILL NOT be accepted. If you cannot fully finish your HW, turn in your incomplete work to receive partial credit.} \newcommand\AIPolicy{The use of AI-generated textual content, mathematical analyses or program code is NOT permitted in this course. If questions arise about the authorship of your work, you may be asked to verify your authorship by either submitting to an oral examination/assessment by the instructor, or by submitting evidence of your work in the form of drafts, notes and version histories.} \newcommand\AttendancePolicy{A roll call will not be taken at the start of each class. However, you are expected to attend ALL classes unless officially excused. Since examination questions will be based on the material taught in class and the prescribed reading from the course textbook, missing classes will put you at a severe disadvantage. So, attend all classes, and be sure to take notes attentively.} \newcommand\ElectronicsPolicy{\textcolor{red}{Since you opted for a customize electronics policy, you should edit this part. Your policy should address your general stance on recording of class sessions and the circumstances under which recording will be allowed or prohibited. If you generally prohibit recording, yet allow recording of certain classes for some reason, then ypu should notify all students that those classes will be recorded. If recording is permitted as an ADA accommodation for a student, you obviously should not identify that student(s).)}}