CS 310: Data Structures (Sec 003 & 006)
George Mason University
Department of Computer Science

Fall 2020
  1. Course Basics

    Instructor:

    Name: Tessema Mengistu (Ph.D.)
    Email: tmengis-at-gmu-dot-edu
    Webpage: https://cs.gmu.edu/~tmengis/courses/FA20/CS310Fall2020.html
    Hours: MWF 10:00 - 11:00 AM or by appointment
    Office: Online

    Graduate Teaching Assistants:

    Name: TBA
    Email:
    Webpage:
    Hours: TBA
    Office:

    Undergraduate Teaching Assistants:

    TBA

    Prerequisites: CS 211 (C or better) and MATH 113 or MATH 124 (C or better)

    Format: Lecture

    Lectures:

    SectionDaysTimesLocation
    Sec 003MW3:00 - 4:15 PMOnline
    Sec 006TR3:00 - 4:15 PMOnline

    Textbooks:

    RequiredData Structures & Problem Solving Using Java, Mark Allen Weiss, 4th edition, Addison Wesley.
    ReferencesData Structures and Abstractions with Java, Frank M. Carrano and Timothy M. Henery, 5 edition, Pearson

    Blackboard: Blackboard will be used for all official announcements, course slides, assignments (including submissions), and grades.

    Piazza: Piazza will be used for online discussion; any information discussed on Piazza will be assumed to be known to students.

    • The discussion board on Piazza is required reading for all projects. You MUST read the discussion board for clarifications and project updates.
    • Course schedule, announcements discussion. GTA/UTA contacts and office hours will be on Piazza too.
    • Do not e-mail course staff about programming problems; use the discussion board.
    • Use public posts on Piazza to discuss programming project requirements, labs, and other material related to the course.
    • When prompted by a TA, use private posts on Piazza to share portions of your code pertaining to your questions. Don't share your project code in public posts.
    • Email course staff only for logistical issues such as meeting outside of office hours, missing lab/lecture, grading disputes, medical situations, etc. Email addresses are listed on above and on Piazza.
  2. Course Information

    Course Description:

    Focuses on object-oriented programming with an emphasis on tools and techniques for developing moderate to large programs. Topics include use and implementation of linear and nonlinear data structures and the design and analysis of elementary algorithms.

    Course Outcomes

    By the end of the semester, students will:

    • Gain an ability to analyze the runtime efficiency of algorithms that create and manipulate data structures.
    • Gain an ability to compare data structure tradeoffs such that the student is able to choose appropriate implementations for a given data structure and appropriate data structures for a given application.
    • Reinforce their knowledge of basic data structures (linked lists, dynamic array lists, stacks, and queues) and extend their knowledge to more sophisticated data structures, including hash tables, balanced trees, priority queues, and basic graphs.
    • Implement and use learned data structures to solve real computing problems. This includes substantial reinforcement of language-specific techniques for abstract data types and design and debugging techniques.

  3. Coursework

    Programming assignments

    Students will receive a number of programming projects during the semester. These programming projects will be a primary focus of your grade - each one should take multiple sessions of coding, with questions asked in between. Don't be surprised if you're spending 20+ hours on each one. All project grades will be averaged together evenly. Programming projects are INDIVIDUAL work.

    • Submission
      • All projects are to be submitted to Blackboard. You can submit your work an unlimited number of times to BlackBoard, and by default only the last version will be graded.
      • Turning in the wrong files will likely result in a zero. You can and should download your submitted attempts to verify that you turned in a working copy.
      • Broken Code == Bad Scores. Any code turned in that does not compile, specifically on Java 1.8 is likely to receive a zero. If the grader is able to quickly fix your code, you might get some points back. If the grader cannot immediately spot and fix the issue, you'll be fortunate to get any points at all.

    • Notes:
      • Submission times are automatically recorded by Blackboard, and there's no distinction between a tiny bit late and nearly a day late - plan ahead to make sure that your submission is on time.
      • Blackboard being unavailable is not an excuse for turning in a late assignment; in the rare situation that the website is somehow unavailable or giving the student an error, the student MUST email their submission to their GTA before the deadline, otherwise it will be considered late.
      • Catastrophic computer failure will not be cause for an extension. Use a backup service such as DropBox (or any cloud service), emailing yourself, storing to a USB drive, whatever it takes. Every semester multiple students' computers die, are stolen, or otherwise 'lose' projects. Don't be the student who forgot to (frequently) back up your work!
      • All projects numbered above 0 will be worth the same amount of points. However, your four highest grades will count for 40% of your semester grade (10% each) and your lowest grade will be used for the remaining (5%). There is Project 0 that will not be part of the calculation, but instead act as a "flag". You will not receive credit for any project until you pass this project, but there will be infinite resubmissions for Project 0 (until some specified date, usually in the middle of the semester). If at the specified date you still have not passed Project 0, your current (and future) project grades will be replaced with a 0s.

    Tests: individual work; online (you need Respondus browser lockdown installed to take tests. Please refer here about respodus browser lockdown). You need to have a working webcam and microphone as well.
    Final Exam: is closed resources and comprehensive; individual; online (you need Respondus browser lockdown installed to take quizzes. Please refer here about respodus browser lockdown). You need to have a working webcam and microphone as well.

  4. Grading Procedures

    Grade Distribution

    MaterialWeightNote
    Class Participation5%
    Programming Projects(5)45% 4 highest score 10% each, lowest 1 scores 5%
    Tests (5)25%
    Final exam25%

    Grading Policies

    • Grades within a category (i.e. midterms, projects, labs) are weighted equally.
    • Students must have Respondus Browser locakdown installed before taking any quiz or exams.
    • The final exam is cumulative.
    • Challenging of any grade must occur within a week of when the graded assignment has been returned.
    • Any number of resubmissions are allowed (the most recent is used), however a resubmission turned in after the deadline will be considered a late submission.
    • In general, make-ups are not allowed except on exams ( under very special circumstances).
    • Assignments are typically due at midnight on the listed due date.
    • Late submission policy (up to 48 hours) is as follows: <=24 hours with 10% off, >24 hours &&<=48 hours with 25% off, > 48 hours will receive 0. For example, if you are late by 10 hours and you get 75 on the assignment, your final points will be 67.5. Submission times are automatically recorded by Blackboard, and there is no distinction between a minute late and a day late. Please plan ahead to make sure that your submission is on time. Taking backups regularly is highly recommended.

    Grading Scale

    Grade A+AA- B+BB- C+CC- DF
    max 9791 898781 797771 6959
    min 989290 888280 787270 60

  5. Honor Code

    Unless specific instructions are given to the contrary, programming assignments are an individual effort, no group work is allowed. In addition to code, this includes the sharing of test cases, pseudocode, or approaches, receiving assistance in debugging code, as well as the use of external Internet sites.

    Both the GMU Honor Code and the CS Department Honor Code apply in this class. Any use of a direct contribution on any program, homework, quiz, or exam will be reported as a violation of the honor code.

    We take the honor code quite seriously. Any attempts at copying or sharing code, algorithms, or other violations of the honor code simply will not be tolerated. We use automated software to flag suspicious cases, and then review them to find the cases that must be submitted to the Office of Academic Integrity. The penalty for cheating will always be far worse than a zero grade, to ensure it's not worth taking the chance. Confirmed cases of cheating almost always translate into course failure.

    Some kinds of participation in online study sites violate the Mason Honor code: these include accessing exam or quiz questions for this class; accessing exam, quiz, or assignment answers for this class; uploading of any of the instructor’s materials or exams; and uploading any of your own answers or finished work. Always consult your syllabus and your professor before using these sites.

  6. Special Accommodations

    Students who have a right to accommodations due to disabilities or other conditions should discuss this with the instructor as soon as possible. Accommodations will follow the recommendations of the University's Office of Disability Services.

  7. Tentative Schedule

    WeekDateTopic(s)Text Book Reading ChaptersAssignmentsNotes
    week 108/24-08/28Review: Basics of OOP using Java 1-4
    Algorithm Analysis5Project-0 (Prerequsite Skills)
    Sun, Aug 30Project -0 due
    week 208/31-09/04Linked Lists17Project-1
    week 309/07NO class - Labor DayTest 1 (Week 1 & 2)
    09/09 Stacks and Queues11, 16
    Sun, Sep 13Project -1 due
    week 409/14-09/18Stacks and Queues 16Project 2
    week 509/21-09/25Review: Recursion ;
    Trees

    7
    18
    Sun, Sep 27Project-2 due
    week 609/28-10/02 Trees (contd)
    18Test 2 (Week 3 - 6);Project - 3
    Sun, Oct 04final resubmission Project 0
    week 710/05-10/09Binary Search Trees19
    week 8Mon, Oct 12Fall Break, no classSec 003 meets on Tue and no class for Sec 006 on Tue
    Hashing20Test 3 (Week 7 & 8)
    Sun, Oct 18Project - 3 due
    week 910/19-10/23Introduction to Graphs
    14Project-4
    week 1010/26-10/30Graphs (contd)14
    week 1111/02-11/06Priority Queues & Heaps21Test 4 (Week 9 - 11)
    Sun, Nov 08Project - 4 due
    week 1211/09-11/13AVL Trees19Project -5
    week 1311/16-11/20Red Black Trees19
    Sun, Nov 22Project - 5 due
    week 1411/23-11/25Special Topics; 24Test 5 (Week 12 & 13)
    Nov 26 - NOv 29Thanksgiving Break, no class
    week 1511/30-12/05Special Topics;
    Final Exam Review
    Exam week Thur, Dec 10Final Exam 1:30 - 4:15PMSec 006
    Mon, Dec 14Final Exam 1:30 - 4:15PMSec 003