\setcounter{numTAs}{1} \setcounter{totalSections}{2} \def\secNum{{"001","002",""}} \def\tenSchFileName{{"","",""}} \def\labTime{{"Thu 2:30 pm - 05:00 pm","Tue 2:30 pm - 05:00 pm",""}} \def\labRm{{"Drosdick 206","Drosdick 206",""}} \def\labLive{{"","",""}} \def\labInstructor{{"Dr. Sarvesh Kulkarni","Dr. Sarvesh Kulkarni",""}} \def\labInstrContact{{"https://www1.villanova.edu/university/engineering/academic-programs/electrical-computer/directory/biodetail.html?mail=sarvesh.kulkarni@villanova.edu&xsl=bio_long","https://www1.villanova.edu/university/engineering/academic-programs/electrical-computer/directory/biodetail.html?mail=sarvesh.kulkarni@villanova.edu&xsl=bio_long",""}} \def\labInstrOffHrs{{"MW 11:30 am - 1:00 pm","MW 11:30 am - 1:00 pm",""}} \def\labInstrLive{{"","",""}} \def\TA{{{"Kieran Seven",""},{"Kieran Seven",""},{""}}} \def\TAEmail{{{"kseven@villanova.edu",""},{"kseven@villanova.edu",""},{""}}} \def\TAOffHrs{{{"Tue 11:45 am - 12:45 pm, Thu 5:00 - 5:30 pm",""},{"Tue 11:45 am - 12:45 pm, Thu 5:00 - 5:30 pm",""},{""}}} \def\TARoom{{{"Drosdick 111 (Wind Tunnel Room)",""},{"Drosdick 111 (Wind Tunnel Room)",""},{""}}} \newcommand\semester{Fall 2025} \newcommand\rsemester{202620} \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\AIPolicyExists{1} \newcommand\isClassLive{0} \newcommand\isLabLive{0} \newcommand\meetingMiscExists{0} \newcommand\isClassInstrLive{0} \newcommand\isLabInstrLive{0} \newcommand\instrMiscExists{1} \newcommand\hasTARoom{1} \newcommand\meetingDesc{(One 150-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{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 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. Unless you have opted-out of Villanova's Textbook Access Program, the interactive course textbook may be accessed AT NO EXTRA CHARGE by going 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 2160 (classroom lecture) 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 may 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. 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\ABETOutOneA{0} \newcommand\ABETOutOneB{0} \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{1} \newcommand\ABETOutSixA{0} \newcommand\ABETOutSixB{0} \newcommand\ABETOutSevenA{1} \newcommand\ABETOutSevenB{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/25 -- 8/29 & No labs this week\\ 2 & 9/1 -- 9/5 & \textbf{9/1: Labor Day break;} Virtual machine, Ubuntu Linux \& SDK installation\\ 3 & 9/8 -- 9/12 & Lab 1: A first program in C++: Menu-driven radius, circumference, area calculations\\ 4 & 9/15 -- 9/19 & Lab 1: Catchup\\ 5 & 9/22 -- 9/26 & Lab 2: Rewrite lab 1 with classes, and over more than one file\\ 6 & 9/29 -- 10/3 & Lab 3: Rewrite lab 2 using Templates \& Class Constructors\\ 7 & 10/6 -- 10/10 & Lab 4: Pointers, dynamic arrays \& file processing\\ 8 & 10/13 -- 10/17 & \textbf{Fall break}\\ 9 & 10/20 -- 10/24 & Lab 5: Measurements \& comparison of the running time of two sorting algorithms\\ 10 & 10/27 -- 10/31 & Lab 5 Contd.\\ 11 & 11/3 -- 11/7 & Lab 6: DLLS, Stacks \& Queues\\ 12 & 11/10 -- 11/14 & Lab 6 Contd.\\ 13 & 11/17 -- 11/21 & 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/24 -- 11/28 & \textbf{11/\{26-28\}: Thanksgiving break}, No labs this week\\ 15 & 12/1 -- 12/5 & Lab 7 Contd.\\ 16 & 12/8 -- 12/12 & \textbf{Tue, 12/9: Deemed Fri class day} No in-person labs this week, but you will continue with Lab 7 on your own, if not finished.\\ 17 & 12/15 -- 12/19 & No labs 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\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 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).}}