605.202.81 - Data Structures

Computer Science
Spring 2024

Description

This course investigates abstract data types (ADTs), recursion, algorithms for searching and sorting, and basic algorithm analysis. ADTs to be covered include lists, stacks, queues, priority queues, trees, sets, and dictionaries. The emphasis is on the trade-offs associated with implementing alternative data structures for these ADTs. There will be four substantial programming assignments. This course will be taught in a language agnostic fashion. Students may choose to develop their work in Java, C++, or Python Prerequisite(s): One year of college mathematics. EN.605.201 Introduction to Programming Using Java or EN.605.206 Introduction to Programming in Python or equivalent. Course Note(s): Not for graduate credit. A course in data structures is needed for admission to the Computer Science and Cybersecurity program. Students who lack this prerequisite can fulfill admission requirements by completing this course with a grade of B– or better. A course in data structures is conditionally required for admission to the Information Systems Engineering program. Students who lack this prerequisite can satisfy it by completing this course with a grade of B– or better before taking any course that requires it. A second course in programming is required for admission to the Artificial Intelligence program. Students who lack this prerequisite can satisfy it by completing this course with a grade of B– or better before taking any course that requires it. Students in the Artificial Intelligence program who plan to take the EN.605.621 Foundations of Algorithms and EN.605.649 Introduction to Machine Learning Sequence are required to take EN.605.202 or equivalent.

Expanded Course Description

Students are assumed to be comfortable and proficient in C++, Java, or Python. Basic programming and object-oriented programming techniques are NOT covered. You should review of dynamic references and file I/O. We recommend this course be taken by itself. If you have significant travel requirements limiting your internet access, you may wish to reconsider taking this course.

Instructors

Default placeholder image. No profile image found for Richard Cost.

Richard Cost

rcost@jhu.edu

Default placeholder image. No profile image found for Scott Almes.

Scott Almes

Profile photo of Farhana Shah.

Farhana Shah

fshah7@jhu.edu

Course Structure

The course materials are divided into modules which can be accessed by clicking Modules on the course menu. A module will have several sections including the overview, content, readings, discussions, and assignments. You are encouraged to preview all sections of the module before starting. Most modules run for a period of seven (7) days, exceptions are noted in the Course Outline. You should regularly check the Calendar and Announcements for assignment due dates.

Course Topics

Course Goals

At the conclusion of this course, with practical experience garnered from judicious homework assignments, bi-weekly discussions, and programming assignments, students will be able describe the various structures and strategies in the programmer's toolbox to selectively choose the appropriate tools, analyzing the pros and cons of each, to match the tool to the application.

Course Learning Outcomes (CLOs)

Textbooks

The required textbook is an e-book. In Module 1, click on the “zyBooks Activity 1” link and subscribe using your JHU email - Do not go to the zyBooks website and create a new account. A subscription is $68.00 and will last throughout the term. You must access the text from within each module to get the credit posted to Canvas. While it is preferred that you complete the reading activities within the time frame of the module, for time management reasons you may work ahead and still get the credit.

Note that the textbook is intended to complement other material in this course, and is required in order to receive a passing grade.

Other Materials & Online Resources

Optional Textbooks for those that like a real textbook:

Required Software

Required Software

Computer System

This course assumes you have access to a personal computer or laptop to use for programming during the course. It needs to be a machine on which you have sufficient administrator access that you can install software, as needed. The operating system can be Windows, Linux or MAC OS.

NOTE: Problems with the computer system that you have chosen to use for developing your programming assignments do NOT constitute a legitimate excuse for late assignments. You are strongly encouraged to have backup arrangements in the event of a drive failure, power problems, or other issues that limit your access.

Student Coursework Requirements

It is expected that each module will take approximately 10-15 hours per week to complete. Here is an approximate breakdown: reading the assigned sections of the zyBook and doing the interactive exercises (approximately 1-2 hours per week, listening to the audio annotated slide presentations (approximately 3-4 hours per week), participating in the discussions (approximately 2 hours per week) and doing assigned Homework and working ahead on programming assignments (approximately 3-5 hours per week). During the modules in which we focus on the programming assignments, you may need to spend 10-15 hours or more on the course. Additional time beyond that may be required if you have limited or out-of-date programming experience. You must be able to commit time during the week for this course. You will not be able to do everything you need to do solely on the weekends. This course will consist of four basic student requirements:

Homework Assignments (40% - Cost)

There will be assigned weekly homework. The number of assigned problems varies each week since the usefulness of written homework varies with the content. Solutions will be released two days after the end of the module. Solutions are found under the ‘Homework and Labs’ link in the course menu.

Problems are selected to emphasize aspects of the lecture material, to cover points omitted in lecture and to prepare students for other work to be submitted. It is in your own best interest to do the homework. Homework problems are not intended to be executed, even if the problem asks for code. Write pseudo-code. The important aspect of the homework is the logic. You are responsible for including the appropriate level of detail.

The Homework grading scheme awards full points if a reasonable, in-depth, and sincere effort is made on each problem. We reserve the right to reduce the points otherwise.

Include your name as part of the file name, e.g., JSmithHW1.pdf, and include your name inside the PDF file.

Labs/Programming Projects (40% - Cost)

There will be four assigned programming assignments (labs), each worth 100 of the total grade. All programming assignments will consist of C++, JAVA, or Python programs coded and executed by the individual student. Collaboration is not permitted. Late programming assignments will be penalized 5 points for each day late. Assignments more than 1 week late cannot be accepted, except by prior arrangement with Scott C. Programs which do not produce some form of legitimate output cannot be accepted for grading. Programs are expected to read and write from/to named files. Please see the Programming Assignments Guidelines located in the Programming Resources section of the course website for additional information on the programming assignments and how they will be graded. Help yourself do better by reviewing the Guidelines prior to submitting each programming assignment.

Programming assignments are graded as follows:

We expect that you can already write minimal, working code. IMPORTANT: You are expected to do your own work. Help from other sources must be acknowledged. It is okay to discuss the problem with others for perspective or to make sure you understand it correctly, but the code you write must be your own. Downloading code from other sources for the programming assignments while strongly discouraged should absolutely be properly accredited. It is prohibited except for the Lab 4 on Sorting.

The labs tend to be time-consuming and you are encouraged to start them as early as possible. Even if we have not yet covered the material you need to know to write the central piece of the code, you can often do other things, like write drivers, or set up your I/O. You are not permitted to use libraries other than I/O or math functions. In particular, you are not allowed to use vectors or ArrayLists.

Preparation and Participation (20%)

Class Discussions (10% - Shah)

There will be 5 graded discussions worth 20 points each. Student participation in class discussions is imperative for a successful online class experience and students are expected to participate in each discussion, using the Discussions forums on the course website. Discussions provide a venue to codify your thinking by explaining something to others and allow you the benefit of other's perception and experience. The goal is to examine the topic thoroughly, apply critical thinking skills, and gauge your mastery of the material. An acceptable post is 75-100+ words, is properly referenced, if needed, and demonstrates an in-depth grasp of the material. Students must post an original post to each discussion question and reply to at least two of your different classmate's postings, with four posts total for full credit. However, you should feel free to post more often. The rubric emphasizes posting on different days to encourage interaction. There are no specific posting deadlines within the module. All posts will be read by an instructor. Although, it is not realistic to reply to every post, an instructor will post 3 or 4 times for each question. Instructors will post summaries of each discussion thread once the discussion has completed. All posts must be made within the scope of the discussion period and within your assigned group. Posts made before the start or after the end of the module will be ignored and are subject to deletion.

Some Notes about Discussions - If you are unfamiliar with discussion forums you may be unsure about exactly what you are supposed to post, so here are some guidelines.

Discussion Rubric
Students will be evaluated both on the quality and quantity of their discussion postings. See the rubric below. See the full Discussion Rubric under Course Information.
Instructors reserve the right to deduct points for not meeting all the Discussion requirements. Discussions found to be plagiarized will be assigned a score of zero and the zero grade will NOT be applied as the dropped discussion.
Online Text (zyBook) Interaction (10% - Cost)

The final piece of the participation grade is completing the interactive exercises in the online textbook. While it is preferred that you complete the reading activities within the time frame of the module, for time management reasons you may work ahead and still get the credit. You must access the zyBook though the associated links in each Canvas Module in order to get the credit posted back to Canvas. Parts of the zyBook marked optional will not be scored, but you are encouraged to complete them. You can track your zyBook performance on the zyBook website.

Grading Policy

Grades will be based on 1000 points over the semester. All students need to get a B- or higher (80% points or more) in Data Structures to satisfy the prerequisite requirement. Students earning a grade below B- will not be allowed to move forward with the program.  We will use a +/- grading system with grades of A+, A, A-, B+, B, B-, C, and F possible, as follows:

ItemNotePart of Grade
Homework Assignments
40%
Programming Assignments
Equally weighted, but not equally difficult
40%
Discussion/Participation
Discussions - 10%
zyBook - 10%
20%
Total
  100%

Feedback

When you click on Grade Center, in the menu, it shows all the assessments for the semester, in a long list. Individual assessments like discussions or labs are listed on the left and the associated score is shown on the right (course averages and medians are shown underneath your score on the right). Items will get filled in as we go through the semester. On the left, under the name of the assessment, it gives the due date, gives the category, and then under that it may have some links to a description, grading criteria, etc. Assessments which use the rubric tool will also have a link to the rubric once it is graded. Click on "View Rubric" and it will show you the score in each category, along with any feedback within the rubric itself. Other kinds of feedback appear as a word balloon on the right next to your score. Check under Syllabus and Course Information for an example image.

Course Policies

Due Dates

All times are specified in terms of EST/EDT, local to the instructors. Final Discussion posts, zyBooks, homework, and programming assignments for the module are always due on Tuesday 11:59 PM. See the calendar and course outline. LATE work will not be accepted, except by prior arrangement. Submissions after the deadline will be accepted by Canvas but will be marked late. We generally will not quibble over a couple of minute’s lateness. Multiple submissions will also be accepted, so if you think of something you forgot to do, a new answer for a question, or if we ask you to redo something, just go ahead and resubmit to Canvas in the same place as the first submission. There is a three-hour grace period on the deadline for Homeworks and Labs only.  

Academic Policies

Deadlines for Adding, Dropping and Withdrawing from Courses

Students may add a course up to one week after the start of the term for that particular course. Students may drop courses according to the drop deadlines outlined in the EP academic calendar (https://ep.jhu.edu/student-services/academic-calendar/). Between the 6th week of the class and prior to the final withdrawal deadline, a student may withdraw from a course with a W on their academic record. A record of the course will remain on the academic record with a W appearing in the grade column to indicate that the student registered and withdrew from the course.

Academic Misconduct Policy

All students are required to read, know, and comply with the Johns Hopkins University Krieger School of Arts and Sciences (KSAS) / Whiting School of Engineering (WSE) Procedures for Handling Allegations of Misconduct by Full-Time and Part-Time Graduate Students.

This policy prohibits academic misconduct, including but not limited to the following: cheating or facilitating cheating; plagiarism; reuse of assignments; unauthorized collaboration; alteration of graded assignments; and unfair competition. Course materials (old assignments, texts, or examinations, etc.) should not be shared unless authorized by the course instructor. Any questions related to this policy should be directed to EP’s academic integrity officer at ep-academic-integrity@jhu.edu.

Students with Disabilities - Accommodations and Accessibility

Johns Hopkins University values diversity and inclusion. We are committed to providing welcoming, equitable, and accessible educational experiences for all students. Students with disabilities (including those with psychological conditions, medical conditions and temporary disabilities) can request accommodations for this course by providing an Accommodation Letter issued by Student Disability Services (SDS). Please request accommodations for this course as early as possible to provide time for effective communication and arrangements.

For further information or to start the process of requesting accommodations, please contact Student Disability Services at Engineering for Professionals, ep-disability-svcs@jhu.edu.

Student Conduct Code

The fundamental purpose of the JHU regulation of student conduct is to promote and to protect the health, safety, welfare, property, and rights of all members of the University community as well as to promote the orderly operation of the University and to safeguard its property and facilities. As members of the University community, students accept certain responsibilities which support the educational mission and create an environment in which all students are afforded the same opportunity to succeed academically. 

For a full description of the code please visit the following website: https://studentaffairs.jhu.edu/policies-guidelines/student-code/

Classroom Climate

JHU is committed to creating a classroom environment that values the diversity of experiences and perspectives that all students bring. Everyone has the right to be treated with dignity and respect. Fostering an inclusive climate is important. Research and experience show that students who interact with peers who are different from themselves learn new things and experience tangible educational outcomes. At no time in this learning process should someone be singled out or treated unequally on the basis of any seen or unseen part of their identity. 
 
If you have concerns in this course about harassment, discrimination, or any unequal treatment, or if you seek accommodations or resources, please reach out to the course instructor directly. Reporting will never impact your course grade. You may also share concerns with your program chair, the Assistant Dean for Diversity and Inclusion, or the Office of Institutional Equity. In handling reports, people will protect your privacy as much as possible, but faculty and staff are required to officially report information for some cases (e.g. sexual harassment).

Course Auditing

When a student enrolls in an EP course with “audit” status, the student must reach an understanding with the instructor as to what is required to earn the “audit.” If the student does not meet those expectations, the instructor must notify the EP Registration Team [EP-Registration@exchange.johnshopkins.edu] in order for the student to be retroactively dropped or withdrawn from the course (depending on when the "audit" was requested and in accordance with EP registration deadlines). All lecture content will remain accessible to auditing students, but access to all other course material is left to the discretion of the instructor.