\setcounter{numTAs}{1}
\setcounter{totalSections}{2}
\def\secNum{{"001","002",""}}
\def\tenSchFileName{{"","",""}}
\def\classTime{{"MWF 09:30 am - 10:20 am","MWF 08:30 - 09:20 am",""}}
\def\classRm{{"Tol 417","Tol 417",""}}
\def\classLive{{"","",""}}
\def\classInstructor{{"Dr. Sarvesh S. 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:00 pm","MW 10:30 am - 12:00 pm",""}}
\def\classInstrLive{{"","",""}}
\def\labTime{{"Thu  01:00 pm to 02:50 pm","Tue 01:00 pm - 02:50 pm",""}}
\def\labRm{{"Tol 426","Tol 426",""}}
\def\labLive{{"","",""}}
\def\labInstructor{{"Dr. Sarvesh Kulkarni","Dr. Sarvesh Kulkarni",""}}
\def\labInstrContact{{"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\labInstrOffHrs{{"\textit{same as above}","\textit{same as above}",""}}
\def\labInstrLive{{"","",""}}
\def\TA{{{"David Randazzo",""},{"David Randazzo",""},{""}}}
\def\TAEmail{{{"drandazz@villanova.edu",""},{"drandazz@villanova.edu",""},{""}}}
\def\TAOffHrs{{{"Tue 3:30 pm - 5:00 pm, Thu 11:00 am - 12:30 pm",""},{"Tue 3:30 pm - 5:00 pm, Thu 11:00 am - 12:30 pm",""},{""}}}
\def\TARoom{{{"TBA",""},{"TBA",""},{""}}}
\newcommand\semester{Fall 2021}
\newcommand\rsemester{202220}
\newcommand\courseNum{ECE 2620}
\newcommand\courseName{C++, Algorithms \& Data Structures}
\newcommand\courseCoordinator{Dr. Sarvesh Kulkarni}
\newcommand\credits{4}
\newcommand\contactHrs{5}
\newcommand\lecture{1}
\newcommand\lab{1}
\newcommand\undergradCourse{1}
\newcommand\isFreshmanCourse{0}
\newcommand\isCustomElecPolicy{0}
\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, One 110-minute practicum 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{1}
\newcommand\txtBkAuthExists{0}
\newcommand\txtBkPublExists{1}
\newcommand\txtBkYrExists{1}
\newcommand\txtBkISBNExists{1}
\newcommand\textBookTitle{ECE 2620: C++, Algorithms \& Data Structures}
\newcommand\textBookAuth{}
\newcommand\textBookPub{zyBooks}
\newcommand\textBookYr{2021}
\newcommand\textBookISBN{978-1-394-11137-4}
\newcommand\supplMaterials{Slides and notes posted on Blackboard}
\newcommand\refPapers{References go here, if specified}
\newcommand\textBookMisc{To \textbf{subscribe} to the course e-textbook:
\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{VILLANOVAECE2620KulkarniFall2021}
  \item  Subscribe
\end{enumerate}}
\newcommand\catalogDesc{C++ classes, access rules, inheritance, friends, abstract classes, passing parameters by value, by reference, polymorphism in functions and operators, static and dynamic binding, templates; searching, sorting; pointer implementation of lists, stacks, queues, trees, hashing; P and NP classes; analysis of algorithms.}
\newcommand\preReqs{ECE 1620}
\newcommand\coReqs{None}
\newcommand\coreRequirement{Required for BS CpE}
\newcommand\courseExpectation{On conclusion of this course, students are expected to:  ~~1. Acquire good programming habits and be proficient in C++ programming including file I/O using object oriented techniques,  ~~2. Learn to use and program under the Linux operating system with the aid of an open source SDK (Anjuta) and compiler (g++),  ~~3. Recognize the importance of, and select appropriate application-specific data structures, ~~4. Implement various data structures using low-level pointer constructs, ~~5. Analyze the asymptotic time complexity of algorithms and understand their impact on execution times, ~~6. And thus, write efficient programs.}
\newcommand\ABETOutOne{1}
\newcommand\ABETOutTwo{0}
\newcommand\ABETOutThree{0}
\newcommand\ABETOutFour{0}
\newcommand\ABETOutFive{0}
\newcommand\ABETOutSix{1}
\newcommand\ABETOutSeven{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: Theory and experiments
\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 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/23 - 8/27 & Review of C; program development concepts and pitfalls\\
2 & 8/30 - 9/3 & The compilation process; software life cycle models; ADTs, classes, class members and object instantiation\\
3 & 9/6 - 9/10 & \textbf{9/6: Labor Day break;}
Functions: outside and within classes, default parameters, function overloading; Constructors: with and without default parameters; destructors; \textcolor{red}{Quiz 1 - Fri, 9/10}\\
4 & 9/13 - 9/17 & Operator overloading; precedence \& associativity of operators; templates for classes \& functions; program organization\\
5 & 9/20 - 9/24 & Member access specifiers; Friend functions \& classes; inheritance: class hierarchies, member access rules \textcolor{red}{Quiz 2 - Fri 9/24}\\
6 & 9/27 - 10/1 & Static \& dynamic function binding; abstract and concrete classes; pointer \& dynamic variables: concepts \& syntax\\
7 & 10/4 - 10/8 & Pointers: visualization, manipulation, passing pointers to/from functions; arrays in pointer notation; allocating and deallocating dynamic arrays \textcolor{red}{Midterm i.e. Exam I - Fri, 10/22}\\
8 & 10/11 - 10/15 & \textbf{Fall break}\\
9 & 10/18 - 10/22 & Asymptotic time complexity of algorithms: Big-O, Big-$\Omega$ and Big-$\Theta$, \& solved examples\\
10 & 10/25 - 10/29 & Asymptotic time complexity: solved examples (contd.); pointer-implementation of singly-linked lists (SLLs)\\
11 & 11/1 - 11/5 & \textcolor{red}{Quiz 3 - Mon, 11/1}; SLLs (contd.)\\
12 & 11/8 - 11/12 & Doubly-linked Lists (DLLs); circular lists; stacks; queues\\
13 & 11/15 - 11/19 & \textcolor{red}{Quiz 4 - Mon, 11/15}; Binary trees \& binary search trees (BSTs)\\
14 & 11/22 - 11/26 & \textcolor{red}{Exam II - Mon, 11/22}; \textbf{11/\{24-26\}: Thanksgiving break}\\
15 & 11/29 - 12/3 & BST operations: BST operations: breadth-first \& depth-first traversals, node insertion, node deletion\\
16 & 12/6 - 12/10 & P, NP and Undecidable problem classes; \textbf{12/8: final day of class}; \textbf{12/10: reading day}\\
17 & 12/14 & 11:30 am - 2:00 pm: \textcolor{red}{Comprehensive Final Examination (Optional)}\\
\bottomrule \end{tabularx} } \end{table}}
\newcommand\gradingPolicy{\noindent
{\bf Homework}: 20\% weightage ... 10\% for pre-class, 10\% for after-class\\
{\bf Laboratory}: 25\% weightage\\
{\bf Quizzes}: four quizzes, 15\% total weightage\\
{\bf Two examinations}: 40\% weightage total\\ 
{\bf Comprehensive Final Exam} (Optional): 40\% weightage (replaces the above two examination scores IF you score higher points)\\

\vspace{-0.05in}
The final grading curve uses composite scores and will reflect a class average of \textit{B-} or \textit{B}, depending on the overall performance of the class. Regardless of the grading curve, a student with a compostite score of 90+ will be awarded an \textit{A} grade while a student with a composite score of less than 50 will be awarded an \textit{F} grade. \textit{In addition, in order to pass this course, a student's aggregate lab score (i.e. the sum of all laboratory assignment scores) must be at least 50\%.}}
\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.\\

\vspace{-0.05in}
\noindent
{\bf {\em Lab}}:\\
The laboratory component will be graded on factors such as successful completion of lab assignments (according to specification) and timely submission of lab reports. Late lab assignments will be assessed a 10\% penalty per day, up to the posted cut-off date. After the cut-off date, lab submissions WILL NOT be accepted.

Please be sure to bring a university-approved laptop to the lab. All programs must be written in C++ using Anjuta SDK and compiled using the GNU C++ compiler under the Ubuntu Linux operating system. You may also need to demonstrate your working programs on your own laptop. Therefore, an essential (and implicit) component of your grade is keeping your laptop in good working order and getting it serviced in a timely manner, if it malfunctions. Please take this responsibility seriously if you value your grade.}
\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).)}}
