\setcounter{numTAs}{1} \setcounter{totalSections}{2} \def\secNum{{"002","100",""}} \def\tenSchFileName{{"","",""}} \def\labTime{{"Tue 1:00 pm to 2:40 pm","Mon 6:15 pm to 7:55 pm",""}} \def\labRm{{"Tol 310A","Vasey 206",""}} \def\labLive{{"","",""}} \def\labInstructor{{"Dr. Sarvesh Kulkarni","Amit Kumar",""}} \def\labInstrContact{{"https://www1.villanova.edu/university/engineering/academic-programs/departments/electrical-computer/directory/biodetail.html?mail=sarvesh.kulkarni@villanova.edu&xsl=bio_long","???",""}} \def\labInstrOffHrs{{"MW 10:30 am - 12:00 pm","???",""}} \def\labInstrLive{{"","",""}} \def\TA{{{"Zhuoyu Lin",""},{"TBA",""},{""}}} \def\TAEmail{{{"zlin4@villanova.edu",""},{"TBA@villanova.edu",""},{""}}} \def\TAOffHrs{{{"Mon, Thu 2:30 - 4:00",""},{"TBA",""},{""}}} \def\TARoom{{{"Email TA to check",""},{"TBA",""},{""}}} \newcommand\semester{Fall 2023} \newcommand\rsemester{202420} \newcommand\courseNum{ECE 2161} \newcommand\courseName{C++ Algorithms \& Data Structures Lab} \newcommand\courseCoordinator{Dr. Sarvesh Kulkarni} \newcommand\credits{1} \newcommand\contactHrs{2} \newcommand\lecture{0} \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{(One 100-minute session per week)} \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{0} \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{2023} \newcommand\textBookISBN{} \newcommand\supplMaterials{Slides and notes for ECE 2160 Lectures} \newcommand\refPapers{References go here, if specified} \newcommand\textBookMisc{The slides and notes for ECE 2160 lectures are posted on Blackboard on that course's main web page. In addition, subscription to the textbook used in the ECE 2160 course is strongly recommended. If you have taken ECE 2160 in a prior semester and no longer have access to the course textbook, you may use any standard C++ programming reference book. In addition, please contact the instructor to obtain copies of ECE 2160 class notes and slides.} \newcommand\catalogDesc{Installation, familiarization with Linux and its IDE, C++ programming exercises incorporating classes and objects, templates, pointers, dynamic variables, file access, measurements of running times of two sorting algorithms, implementation of linked lists, queues and stacks using composition.} \newcommand\preReqs{ECE 1260 and ECE 1261} \newcommand\coReqs{ECE 2160} \newcommand\coreRequirement{Required for BS CpE} \newcommand\courseExpectation{On conclusion of this course, students will be able to: ~~1. Program proficiently in C++ using object oriented techniques and good code documentation practices, ~~2. To program non-GUI C++ applications under the Linux operating system with the aid of an open source SDK (Anjuta) and compiler (g++), ~~3. Implement and use pointer-based data structures such as linked lists, stacks, queues and binary search trees in C++, ~~4. Program and measure the running time of at least two searching algorithms not covered in class by the process of self-learning, and verify that the observed running times are in rough conformance with the theoretical expression for asymptotic running time complexity.} \newcommand\ABETOutOne{0} \newcommand\ABETOutTwo{0} \newcommand\ABETOutThree{0} \newcommand\ABETOutFour{0} \newcommand\ABETOutFive{0} \newcommand\ABETOutSix{1} \newcommand\ABETOutSeven{1} \newcommand\covTopics{\item Programming in C++ using the Anjuta SDK running on Ubuntu Linux \item Writing modular programs using interactive menus, functions, classes and templates \item Source code organization over multiple files \item Pointers and dynamic variables \item File I/O operations \item Measurement of running times of algorithms \item Implementation of the following pointers-based user-defined data structures using composition techniques: DLLS, Stacks, Queues and BSTs (time permitting). } \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|l|X} \toprule \large \textbf{Week \#} & \large \textbf{Dates} & \large \textbf{Topics}\\ \midrule \midrule 1 & 8/23 -- 8/25 & No labs this week\\ 2 & 8/28 -- 9/1 & Virtual machine, Ubuntu Linux \& SDK installation\\ 3 & 9/4 -- 9/8 & \textbf{9/4: Labor Day break;} Lab 1: A first program in C++: Menu-driven radius, circumference, area calculations\\ 4 & 9/11 -- 9/15 & Lab 1: Catchup\\ 5 & 9/18 -- 9/22 & Lab 2: Rewrite lab 1 with classes, and over more than one file\\ 6 & 9/25 -- 9/29 & Lab 3: Rewrite lab 2 using Templates \& Class Constructors\\ 7 & 10/2 -- 10/6 & Lab 4: Pointers, dynamic arrays \& file processing\\ 8 & 10/9 -- 10/13 & \textbf{Fall break}\\ 9 & 10/16 -- 10/20 & Lab 5: Measurements \& comparison of the running time of two sorting algorithms\\ 10 & 10/23 -- 10/27 & Lab 5 Contd.\\ 11 & 10/30 -- 11/3 & Lab 6: DLLS, Stacks \& Queues\\ 12 & 11/6 -- 11/10 & Lab 6 Contd.\\ 13 & 11/13 -- 11/17 & Lab 7: A student database system using Binary Search Trees -- file i/o, search, edit, delete, full record dump (traversal) of student records\\ 14 & 11/20 -- 11/24 & \textbf{11/\{22-24\}: Thanksgiving break}\\ 15 & 11/27 -- 12/1 & Lab 7 Contd.\\ 16 & 12/4 -- 12/8 & Lab 7 Contd.\\ 17 & 12/11 -- 12/15 & No lab this week\\ \bottomrule \end{tabularx} } \end{table}} \newcommand\gradingPolicy{\noindent Lab scores will be aggregated into a single final percentage score. This percentage score will be converted to a letter grade on the following scale: A(93 -- 100), A--(90 -- 92.9), B+(87 -- 89.9), B(83 -- 86.9), B--(80 -- 82.9), C+(77 -- 79.9), C(73 -- 76.9), C--(70 -- 72.9), D+(67 -- 69.9), D(63 -- 66.9), D--(60 -- 62.9), F(<60). Thus, for instance, if there are six lab assignments in the semester and your scores are 85/100, 90/100, 80/100, 90/100, 190/200 and 160/200, then your final score is 695/800 i.e.\ 86.9\%. Thus, your final grade is B+.} \newcommand\HWandLabPolicy{Laboratory assignments will be graded on factors such as their successful completion in accordance with stated specifications, the timely submission of source code and laboratory reports (if asked for), and adequate code documentation. \textbf{Late assignments will be assessed a 10\% penalty per day}, up to the posted cut-off date. \textbf{After the cut-off date, lab submissions WILL NOT be accepted} unless compelling medical or personal reasons are provided along with supporting documentation. 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 if we have trouble compiling and running it on our systems. 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. You must also back up your work on an external USB or cloud drive, just in case your laptop becomes inoperable. Please take this responsibility seriously if you value your grade.} \newcommand\AttendancePolicy{A roll call will not be taken but attendance is required in all lab sessions. Lab sessions are for getting help interactively for your lab assignments. The first fifteen minutes of each lab session are especially important to attend since the instructor will provide directions for successful completion of that week's assignment. However, please note that most lab assignments will require a few additional hours outside of lab sessions in order to finish your assignment. Also please realize that the instructor's and TA's office hours are not meant to be used as substitutes to lab attendance. } \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 you 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).}}