- Prof. Dancy's Site - Course Site - Course Google Classroom
Prof. Chris Dancy
Office: Dana 340
Phone: 570.577.1907
Office Hours: M 2-3:30pm, Th 2-3:30pm - My calendar
Tentative Course Schedule - Check here periodically for changes
Type | Professor | Location/Time |
---|---|---|
Lecture | Prof. Alex Fuchsberger (Section 01) | MWF 10-10:52am, Dana 115 |
Lecture | Prof. Chris Dancy (Section 02) | MWF 1-1:52pm, ACET 116 |
Lecture | Prof. Edward Talmage (Section 03) | MWF 3-3:52pm, Dana 137 |
Lab | Prof. Alex Fuchsberger (Section 60) | Th 1-2:52pm, DANA 213 |
Lab | Prof. Chris Dancy (Section 61) | Th 10-11:52, ACET 116 |
Lab | Prof. Edward Talmage (Section 62) | Th 3-4:52, DANA 213 |
Consider all of the tweets on Twitter or all of the status messages on Facebook. If someone asked you to design a method to search or sort every tweet or message ever sent, how would you begin to think about such a problem? How about if someone asked you to design a program to serve as memory for a virtual agent in Minecraft? How do you know the difference between an approach that takes 200 milliseconds and 200 years to run the primary operations? How would you organize the data in a way that helps you meet your goals? How do you even know where to start?
In this course, we will give you the tools to answer these questions. We will study the organization of data and learn how to analyze the impact of algorithms not only in our own programs, but in programs that must handle thousands, millions, or billions of data points. We will learn about the following topics:
Standard Data Structures: A data structure is a way of organizing and manipulating data (for example, Python lists). A smart choice of structuring your data can mean the difference between dramatically speeding up your program's execution or rendering a program so slow that it becomes unusable. In 204, we are going to learn both the organization and use of classical data structures (stack, queue, array, linked list, tree).
Data Abstraction: Throughout the course, we will be familiarizing ourselves with the powerful notion of separating abstract properties of data types from their concrete implementations in Python. We will learn to view complex programs as combinations of individual pieces (through Object-Oriented Programming) and reason about the behavior of those pieces independently of their implementation. This will ultimately help you develop more versatile software that is easy to update and reuse.
Algorithm Analysis: Programs are often judged by how fast they run and how effectively they utilize memory space. Interestingly, how fast a program runs can be established by looking at their underlying algorithms in theory only. We will study how to describe the efficiency of algorithms and evaluate various approaches to implementing data structures and algorithms. This will allow us to make an intelligent choice and alter a data structure suitable for a particular program.
As a student and citizen of the Bucknell University community:
Category | Weight |
---|---|
Projects | 33% |
Engagement | 10% |
Quizzes | 10% |
Labs | 15% |
Midterm | 12% |
Final Exam | 20% |
There will be three major programming projects during the semester, each broken into multiple phases. Each phase is due by 11:55 PM on the due date. Late projects will receive a 10% penalty each day they are overdue. You get 3 free late days to use on projects as you see fit. You do not have to inform me when you are using a late day. I will assume it when your work comes in late.
Unless specified otherwise, you are allowed to work with a partner on any project. However, you cannot work with the same partner on more than one project. While you can discuss strategies for completing the assignment with anyone in class, you may only share the details of your code with TAs, professors, and your partner.
This section will incorporate a diverse set of activities both in and out of the classroom. Throughout the semester, we will use in-class group work to enhance the lecture material (for example, situating theoretical concepts in industrial scenarios). In addition, you will occasionally be given short practice problems to complete before the following lecture. Finally, it is possible that small quizzes will be given on material that I find to be the most essential. There will be no make-ups of any material that contributes towards the engagement grade, however there may be opportunities for extra credit through attending certain community academic events and/or lectures.
Levels of collaboration will be specified in class. Warm-ups, or take-home exercises, should be done on your own.
In-class quizzes will be given. These quizzes will be given at my discretion and I will likely not give warning of which days we will have a quiz (i.e., most will be pop-quizzes!)
Quizzes generally cannot be made up.
There will be one one-hour midterm during the semester and a final exam at the end. In general, I structure my exams so that they emphasize conceptual material, but still have coding requirements. If necessary, an in-exam study sheet will be provided by the me approximately 2 class sessions before the exam.
Lab attendance is mandatory. You should be able to finish them within roughly 4 hours. Labs are always due the following Monday by 11:55 PM and will be graded on a 0 to 10 scale. If you do not attend the lab, your maximum grade on the lab is an 8. Late labs are not accepted. The lowest lab grade will be dropped at the end of the semester.
You may discuss the lab with anyone else in CSCI 204. You can even show your code briefly to other students. However, all code should be written on your own.
Emergencies happen. If one occurs, please contact your Dean as soon as possible. I am likely to give extensions or excused absences if you contact me before things are due. Please note that you should follow the school's policy for sports trip. If necessary, I can give you an assignment early or send an exam with you on the trip.
If you have a disability that may have some impact on your work in this class and for which you may require accommodations, please feel free to talk to me as well as submit the Disability Accommodation Request Form or contact the Office of Accessibility Resources at OAR@bucknell.edu, 570-577-1188 or in room 107 Carnegie Building so that such accommodations may be arranged. Bucknell University will make reasonable accommodations for persons with disabilities. Students should notify their instructor as well as submit the Disability Accommodation Request Form or contact the Office of Accessibility Resources at OAR@bucknell.edu, 570-577-1188 or in room 107 Carnegie Building so that such accommodations may be arranged.
I recognize that the college experience can sometimes be overwhelming and stressful trying to balance your academic pursuits with your non-academic life and interests. If you feel that things are getting overwhelming, please seek help. I am happy to talk to you and point you to a resource on campus that can work with you to get the help you need. If you feel comfortable, please reach out to us. If not, I do advise that you do get help. The Division of Student Affairs is the best starting point. You can find more information on their website: https://www.bucknell.edu/StudentAffairs
Any student who has difficulty affording groceries or accessing sufficient and nutritious food to eat every day, or who lacks a safe and stable place to live, and believes it is affecting their learning, is urged to contact the Dean of Students for support. Furthermore, I encourage you to notify me of this as well - I will keep all such information confidential. This will enable me to provide any resources that I may possess and identify other resources in the University.
The instructor promises the best effort in adhering to the above rules but reserve the right to change them if deemed necessary. For instance, slight alterations to the course schedule are possible if the class needs more/less time for a certain topic; additional readings may be assigned during the semester as needed; and so on. Updates will be announced in class and by email, posted on course webpage and on Google Classroom. Check your Bucknell email and Google Classroom at least daily.