# CSC300: Syllabus

 Contents [0/14]

 Video [1/14] Course Overview [2/14] Course Objectives [3/14] Prerequisites [4/14] The foundation of a CS education [5/14] The curriculum [6/14] Getting a job [7/14] This class will be "lightly" flipped [8/14] Assessment [9/14] Course Homepage for Lectures [10/14] Discussion Forum [11/14] Contact Information [12/14] Textbooks [13/14] Policies [14/14]

 Video [1/14]

There is no video for these slides. We will go over the material in class.

If you missed the class meeting, watch the recording on D2L:

 Course Overview [2/14]

This is the first course in a two-course sequence on data structures using Java. The course introduces basic Java programming, reviews recursion, introduces asymptotic notations, and focuses mainly on linear data structures including arrays, linked lists and their variants, stacks and queues, and data structures supporting disjoint-set operations. The implementation of the basic operations on each data structure are discussed and analyzed in terms of their efficiency. The applications covered highlight and exploit the unique characteristics of the data structures, and emphasize problem solving and recursive thinking.

 Course Objectives [3/14]

Programs are not just for computers: We use them to communicate to other people.

• Ability to code without typing (on paper/whiteboard)
• Understanding correctness of programming
• Understanding performance characteristics of programs
• Competence with iterative and recursive solutions to problems
• Basic object-oriented programming
• Use of debuggers
• Use of testing

Plus

• Understanding of linked lists and resizable arrays
• Understanding of stacks, queues, dequeues
• Understanding of heaps
• Understanding of union-find

A data structure is a concrete implementation of an abstract type

• For example, linked lists and resizable arrays are data structures that could be used to represent the list type in python
• Which does python use? Why?

 Prerequisites [4/14]

A prior programming class, ideally in Python, C, or Java.

You should be familiar with:

 The foundation of a CS education [5/14]

• Discrete Math (MAT140/141): Logic, counting, probabilities

• Introductory Programming (CSC241/242 or CSC243): Programs as instructions

• Write for the machine
• Run manual tests
• Data Structures (CSC300/301): Programs as ideas

• Write for humans
• Run automated tests
• Analyze correctness
• Analyze complexity/performance (resource usage)
• Time
• Space (computer memory)
• Power, network usage, etc
• Systems (CSC373/374): How programs execute

 The curriculum [6/14]

 Getting a job [7/14]

I recently received a request from a former student for qualified programmers:

I was volunteered to be part of a hiring team so have been spending lots of my time interviewing candidates, many of whom are not very talented. ... You should see these resumes. These guys have seven years of experience doing java web development, they list 80 java and web related acronyms on their resumes, and they can't write a method that prints the odd numbers from 1 to 100.

If you are doing an online screening interview and you paste 400 lines of code you found on Chegg or GeeksForGeeks, you are not getting the job!

 This class will be "lightly" flipped [8/14]

Class meetings will be spent

• Introducing the weekly material
• Answering questions, reinforcing difficult points
• Doing whole class exercises, such as polls
• Doing individual exercises, such as coding on paper
• Working on homework, with the opportunity to ask questions
• Discussing solutions to homework and quizzes

Class meetings are recorded for access after class.

• You will find the lectures on D2L

Class meetings may be shorted than the allocated class time

Activities each week:

• Watch the recorded lecture. Watch actively:
• Watch with a computer and paper available
• Pause the recording frequently as needed
• Type in the code presented in the lecture -- run it -- try it out -- experiment
• Attend the class meetings
• If you cannot attend live (in person or on zoom), be sure to watch the recording within 36 hours
• If you plan to watch asynchronously every week, schedule a time to do this
• Watch actively: skip silences and pause the recording as needed
• Submit the weekly homework assignment on D2L
• Occasionally there will be exercises to do on paper
• Do the weekly programming assignment
• You do not have to do it alone, but you must be self-motivated.
• You can ask me and other members of the class.
• You must start assignments early.
• Do the weekly quiz on D2L

Getting the homework correct is not enough. ChatGPT can do it for you!

You must be able to demonstrate understanding by repeating the exercise on paper.

 Assessment [9/14]

All students are expected to abide by DePaul's academic integrity policy which prohibits cheating and other misconduct in student coursework. Publicly sharing or posting online any prior or current materials from this course (including exam questions or answers), is considered to be providing unauthorized assistance prohibited by the policy. Both students who share/post and students who access or use such materials are considered to be cheating under the Policy and will be subject to sanctions for violations of Academic Integrity.

Grades will be determined as follows.

• 20% Online quizzes

• Always due at 10am -- not a second later -- watch the clock
• 25% Programming assignments

• To solve the weekly homeworks and quizzes, you may find it useful to consult external resources at first. That is acceptable for this class. It is not an academic integrity violation.
• However, it is your responsibility to repeat each problem until you can do it yourself, starting from scratch, in a reasonable amount of time (about five minutes).
• Once you have ensured that you can complete the problem using the IDE, you must then ensure that you can do it on paper. This is a crucial part of the homework!
• If you cannot produce the solution, on paper, without assistance, then you have not understood it. You will not do well on exams or job interviews.
• Programming assignments that do not compile will receive zero points. You must type in the homework and ensure that your code runs. If you cannot complete one problem of the homework, comment out your failed solution and restore the stub function that was provided. You can find the original assignments here.
• Always due at 10am -- not a second later -- watch the clock
• Make sure you submit to the correct folder -- no credit for other folders
• Late homework accepted for partial credit -- in a separate folder
• You can submit as many times as you like -- I will grade the last one
• 55% Exams

• On exams, you must work alone, without any external resources.
• Exams will be given on paper. You will be asked to write code on paper.
• Students in section 511 must register with a proctor for both exams. Students that require special accommodations for exams must also register ahead of time. See here.
• Exams will be given in person. There are no online exams. You must appear physically in front of a proctor (either the instructor or someone else, as described in the policy linked above.)

You must pass the final exam in order to pass the course.

 Course Homepage for Lectures [10/14]

• Lecture slides may not be available before the class.
• Lecture slides may change after class.

 Discussion Forum [11/14]

We will use zoom for live discussion during class meetings. To join a meeting, use the link listed on the D2L calendar of events.

We will use discord as a discussion forum for class.

• Discord supports Markdown formatting
• Change your nickname to be your first and last name. Use whatever firstname you prefer, but be sure that your last name is the same as it is in DePaul's Campus Connect.
• We have all types of students in class. Be sure to use appropriate language.
• Don't troll.

The discussion forum is an extension our time in class. This is particularly great for students that miss a class meeting. If you are watching the class online, you should write down any questions that arise, including the time from the recording for reference. Then send the list of questions to me, and I will post a reply to the group.

 Contact Information [12/14]

 Instructor: James Riely Home Page: https://fpl.cs.depaul.edu/jriely Email: jriely@cs.depaul.edu Phone: 1.312.362.5251 Address: School of Computing, DePaul University 243 South Wabash Avenue Chicago, IL 60604-2301 Office: CDM 845 Office Hours: Tue 1:00pm-2:00pm in CDM 845 and https://depaul.zoom.us/j/93726990547 Class Page: https://fpl.cs.depaul.edu/jriely/ds1/ Class Hours: Tue/Thu 10:10am-11:40am in CDM 228
• If you would like to talk, contact me on Discord or email me -- Voicemail is annoying.
• You can expect that I will respond to email and discord messages within 24 hours on business days.
• You can expect grades to be posted within a week of the due date.

 Textbooks [13/14]

 Required Books
 by Cay Horstmann (Addison-Wesley, 2017) Available as Ebook Older edition is fine.
 by Robert Sedgewick and Kevin Wayne (Addison-Wesley, 2011) Available as Ebook (Author videos) These are also for sale as an Ebook Do not get an older edition. They are completely different books.
 Recommended Books
 by John Hubbard (Schuams, 2009) This book is a good source of example problems with solutions. Available as Ebook
 More Books
 How to Think Like a Computer Scientist by Allen B. Downey. Free! An good introduction to Java. Skip the GridWorld chapters, which are intended to help with the AP exam in CS. See also these lecture notes from MIT. The first three lectures are particularly useful.
 Introduction to Programming in Java (Chapter 1) by Robert Sedgewick and Kevin Wayne Free! This is the first chapter of the introductory text written by the authors of our primary textbook. It presents the same material as section 1.1 of the primary text, but at a slower pace.
 by Joshua Bloch (Addison-Wesley, 2008) Available as Ebook

The algorithms text describes all of the Java that is required for the class. The discussion is terse, making it an excellent reference. If you would like a longer discussion of Java, you might want a supplementary text. In this case, you might consider one of the following.

 Policies [14/14]

You must attend class!

• Retro-Active Withdrawal

CDM understands certain extenuating circumstances can hinder one's ability for academic success and completion of course work. Please see https://www.cdm.depaul.edu/Current%20Students/Pages/Enrollment-Policies.aspx for additional information.