\setcounter{numTAs}{1} \setcounter{totalSections}{2} \def\secNum{{"001","002",""}} \def\tenSchFileName{{"","",""}} \def\classTime{{"MWF 8:30 am - 9:20 am","MWF 9:35 am - 10:25 am",""}} \def\classRm{{"Tolentine 427A","Tolentine 427A",""}} \def\classLive{{"","",""}} \def\classInstructor{{"Dr. Sarvesh Kulkarni","Dr. Sarvesh Kulkarni",""}} \def\classInstrContact{{"https://www1.villanova.edu/university/engineering/academic-programs/departments/electrical-computer/directory/biodetail.html?mail=sarvesh.kulkarni@villanova.edu&xsl=bio_long","https://www1.villanova.edu/university/engineering/academic-programs/departments/electrical-computer/directory/biodetail.html?mail=sarvesh.kulkarni@villanova.edu&xsl=bio_long",""}} \def\classInstrOffHrs{{"MW 10:30 am - 12:30 pm","MW 10:30 am - 12:30 pm",""}} \def\classInstrLive{{"","",""}} \def\TA{{{"Ms. Prathibha Keshavamurthy",""},{"Ms. Prathibha Keshavamurthy",""},{""}}} \def\TAEmail{{{"pkeshava@villanova.edu",""},{"pkeshava@villanova.edu",""},{""}}} \def\TAOffHrs{{{"MW 12:30 - 1:30 pm, Tue 12:30 - 1:00, 3:30 - 4:00 pm",""},{"MW 12:30 - 1:30 pm, Tue 12:30 - 1:00, 3:30 - 4:00 pm",""},{""}}} \def\TARoom{{{"Drosdick 307",""},{"Drosdick 307",""},{""}}} \newcommand\semester{Fall 2024} \newcommand\rsemester{202520} \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{0} \newcommand\textBookTitle{ECE 2160: C++, Algorithms \& Data Structures} \newcommand\textBookAuth{} \newcommand\textBookPub{zyBooks} \newcommand\textBookYr{2024} \newcommand\textBookISBN{} \newcommand\supplMaterials{Slides and notes posted on Blackboard} \newcommand\refPapers{References go here, if specified} \newcommand\textBookMisc{If you have opted-in to Villanova's Textbook Access Program, the interactive course textbook may be accessed by following the instructions \href{ACCESS_Student_Instructions_15.pdf}{\textcolor{blue}{HERE}} at no extra charge. If you have opted out of Villanova's Textbook Access Program, then please \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{VILLANOVAECE2160KulkarniFall2024} \item Subscribe \end{enumerate}} \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{1} \newcommand\ABETOutOneB{1} \newcommand\ABETOutTwoA{0} \newcommand\ABETOutTwoB{0} \newcommand\ABETOutTwoC{0} \newcommand\ABETOutTwoD{0} \newcommand\ABETOutThree{0} \newcommand\ABETOutFourA{0} \newcommand\ABETOutFourB{0} \newcommand\ABETOutFourC{0} \newcommand\ABETOutFive{0} \newcommand\ABETOutSixA{0} \newcommand\ABETOutSixB{0} \newcommand\ABETOutSevenA{1} \newcommand\ABETOutSevenB{1} \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/26 -- 8/30 & Review of C; program development concepts and pitfalls\\ 2 & 9/2 -- 9/6 & \textbf{9/2: Labor Day break;} Review of C (contd.); The compilation process; software life cycle models; ADTs, classes\\ 3 & 9/9 -- 9/13 & Class members and object instantiation; Functions: outside and within classes, default parameters, function overloading; Constructors: with and without default parameters\\ 4 & 9/16 -- 9/20 & \textcolor{red}{Quiz 1 - Mon, 9/16} Destructors; operator overloading; precedence \& associativity of operators; templates for classes \& functions\\ 5 & 9/23 -- 9/27 & Program organization; member access specifiers; Friend functions \& classes; inheritance: class hierarchies\\ 6 & 9/30 -- 10/4 & \textcolor{red}{Quiz 2 - Mon 9/30} Member access rules; static \& dynamic function binding; abstract and concrete classes; Pointer \& dynamic variables: concepts \& syntax\\ 7 & 10/7 -- 10/11 & 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/11}\\ 8 & 10/14 -- 10/18 & \textbf{Fall break}\\ 9 & 10/21 -- 10/25 & Asymptotic time complexity of algorithms: Big-O, Big-$\Omega$ and Big-$\Theta$, \& solved examples\\ 10 & 10/28 -- 11/1 & Asymptotic time complexity: solved examples (contd.); pointer-implementation of singly-linked lists (SLLs)\\ 11 & 11/4 -- 11/8 & \textcolor{red}{Quiz 3 - Mon, 11/4}; SLLs (contd.)\\ 12 & 11/11 -- 11/15 & Doubly-linked Lists (DLLs); circular lists; stacks; queues\\ 13 & 11/18 -- 11/22 & \textcolor{red}{Quiz 4 - Mon, 11/18}; Binary trees \& binary search trees (BSTs)\\ 14 & 11/25 -- 11/29 & \textcolor{red}{Exam II - Mon, 11/25}; \textbf{11/\{27-29\}: Thanksgiving break}\\ 15 & 12/2 -- 12/6 & BST operations: BST operations: breadth-first \& depth-first traversals, node insertion, node deletion\\ 16 & 12/9 -- 12/11 & P, NP and Undecidable problem classes; topics review on final class day (Wed, 12/11); \textbf{Tue, 12/10: Deemed Fri class day}\\ 17 & 12/16 & \textcolor{red}{12/16: Comprehensive Final Examination (Optional) from 11:30 am - 2:00 pm in Driscoll 246} \\ \bottomrule \end{tabularx} } \end{table}} \newcommand\gradingPolicy{\noindent {\bf Homework}: 35\% weightage ... 20\% for pre-class, 15\% for after-class\\ {\bf Quizzes}: four 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 90+ 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 90 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).)}}