Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: daixieit

CS 113  FALL 2022

DATA STRUCTURES & ALGORITHMS

WELCOME!

If we use the metaphor of a car, up until now you’ve learned the basics of driving (CS111) and some advanced moves like parallel parking and drifting (CS112). This is the class where we     learn about thermodynamics and how combustion works, what has been giving our car the     energy of locomotion. In this course, we’ll be exploring the design of data structures and        algorithms and formally defining efficiency from various perspectives throughout the            semester. You’ll also be getting a taste of what software engineering is, specifically       Agile development, and learning to use more industry-standard tools. Oh, and you’ll be doing a ridiculous amount of programming. Let’s get started!

HOW TO SUCCEED

Communication is key! Make sure you check your email at least once a day, but more           importantly make sure you communicate any concerns, issues, or problems as you run into  them during the semester. You’ll see why this is so important as you read through the rest of the syllabus. All of the course material can be downloaded from our Canvas course.

Studying

Its important that, after the lecture, you review the material covered to ensure you learned it thoroughly. If you had trouble with the reading, give it another shot after the lecture,              hopefully, it will be more straightforward after covering the material in class. Make sure to      complete this BEFORE doing the homework as it will test your critical thinking skills, which    need a strong grasp of the fundamentals covered in the reading/lecture to solve harder            problems. Especially with the many ways we manage and store data, you may want to keep a    running cheat-sheet with key facts and pitfalls as the semester goes on. Make sure to draw out steps/actions for a subroutine to visualize a data structure to help you understand scenarios we didn’t have time to go over in class. You're encouraged to study in groups!

Readings

Readings come from Koffman and Wolfgang“Data Structures: Abstraction and Design Using      Java”(2nd Ed., 2010). Make sure to at least skim the chapter assigned before attending lecture, it may be confusing but you’ll have a much better grasp of the material as we go over it in class!

Lectures & Notes

You should arrive on time and ready to work, but your presence does not always mean you are  ready to learn! If you are dealing with food/home insecurity, dealing with a recent loss,             stressed, etc. this can have adverse effects on your learning. Please make sure to take advantage of the resources described on the previous pages. If you arrive late to a couple of classes, or     even miss class, expect to receive an email from me checking in to see if any accommodations  are needed. Regular attendance is important since each class builds upon the previous lessons. Lecture slides are posted a week ahead in various formats (full color, as well as black & white in: 2/page, 3/page, and 6/page) so that you can print/download ahead of time and annotate them   with your own personal notes in class. Some lecture slides can be VERY long due to animations, check before printing! Definitely bring paper and a pencil (or some digital writing alternative) as we do a lot of drawing exercises in class.

Exams/Tests/Quizzes

Tests are based on the lectures, key concepts and written exercises done in class.

Missing an exam will result in a score of 0, so make sure to talk to me early enough to accommodate a makeup or early exam.

Homework/Labs

If I were teaching you how to swim, shoot a basketball, or crochet a scarf through a lecture or  PowerPoint, Iwould guess you wouldn’t have mastered any of those skills in the time we shared in class. Studying is you practicing what we covered in the reading/lecture, ensuring you got    the foundation down. Further practice is needed (i.e. swimming more than one lap, shooting   the basketball further away, crocheting a wider scarf) to try new things that weren’t able to be covered in class. Finally, the homework is where you will find the hardest problems (i.e.,          swimming 5 laps under 5 minutes, shooting a 3-point jump shot, crocheting matching gloves). So in order to do well on the homework, make sure you study, practice, THEN attempt the     homework! See schedule for homework deadlines. Homeworks/Labs are assigned and              completed weekly, in general, no late homework is accepted but accommodations can be       made with enough of notice. However, the lowest homework score will be dropped (Canvas is set up to automatically do this as the semester goes on).

Group Projects

Projects are similar to homework, but in self-assigned pairs. The purpose is to practice Agile programming on real projects with a different classmate for each group project.                  The group projects will usually have a further application of a specific data structure(s),       building them up to the final project.

Final Group Project

You will have an open-ended project in an assigned group of 2 students at the end of the        semester. It must implement a generic Graph data structure and at least one Graph algorithm in a useful/significant way. You are also encouraged to use external libraries and APIs. Further details and guidance will be given later in the semester.

GRADING

The course is based on the percentage of total

points earned. Notice the largest percentage of

your grade is homework. I would rather reward

the time and effort you put in outside of class

more than weighing exams where you have to

perform on-the-spot.

Make-up group projects or late-homework are generally not accepted. However, I am always willing to accommodate personal, family, child-care, physical/mental health, work and other emergencies (to name a few). The best way to ensure that you are accommodated appropriately and it does not affect your grade or progression through the class is to contact me as soon as possible. Contacting me before deadlines or assignments are due will increase the likelihood of accommodations, after-the-fact makes it much more difficult unless they are extenuating circumstances. When in doubt, talk to me ASAP!

OFFICIAL STUFF

COURSE DESCRIPTION

This course is designed for programmers who know the fundamentals of programming but         would like to design efficient solutions to common programming problems. This course will use the Java programming language as the implementation language for solving these                   programming problems. Students will learn to use the following algorithm and data structures: sorting, searching, hashing, collections, lists, stacks, queues, trees, sets, dictionaries, and         graphs. The students will also learn to choose the appropriate data structure and algorithm for different problems and they will effectively analyze their solution to see if it meetings various  criteria for performance. They will employ object-oriented programming techniques and learn some basic design patterns. In addition, the students will learn the beginning concepts of a      version control system.

COURSE LEARNING OUTCOMES

At the conclusion of this course, students will be able to demonstrate the following outcomes:

1.  Analysis - Students will be able to analyze abstract programming problems involving data sets and produce software designs that utilize appropriate data structures. This includes analyzing the efficiency of an algorithm in comparison with other similar algorithms.

2.  Problem Solving - Students will generate solutions to programming problems using existing data structures as well as employ efficient and appropriate algorithms to access and process the data contained within the data structures.

3.   Communication - Students will be able to describe basic data structures and explain the     details of common algorithms used to manipulate the data contained in those data structures both verbally and in writing.

4.  Teamwork - Students will be able to work in a team that will agree on an organizational model, establish roles and delegate tasks to develop designs which incorporate data structures and     algorithms and produce a programming project in a timely, cooperative, and collective manner.

ETHICS

Assignments are to be completed by the individual student unless otherwise noted directly by  the instructor. While meaningful dialogue over homework is acceptable, turning in work that   someone else has completed is considered academic dishonesty. Other things that could also   be deemed as academic dishonesty, but not limited to, are: using all or parts of a solution     online (Google, StackOverflow, GitHub, Yahoo Answers, etc.), sharing all or parts of your code with a classmate, turning in code that fakes output but does not actually solve       intended problem, and other practices up to the discretion of your instructor. All parties involved will receive no points for that assignment. Also, any student caught cheating on a quiz or exam will automatically receive a 0.