- Prof. Dancy's Site - Course Site - Course Moodle
Prof. Chris Dancy
Office: Dana 340 (Remote this semester!)
Phone: 570.577.1907 (Remote this semester, use email/Discord/Zoom instead!)
Office Hours Starting 28-September: Mon 3:25-4:25pm, Tues 12:45am-01:45pm, Thurs 9:40am-10:40am - Make an appt bu clicking here using Google Calendar
Tentative Course Schedule starting 28-September - Check here periodically for changes
Type | Professor | Location/Time |
---|---|---|
Lecture | Prof. Sam Gutekunst (Section 01) | MWF 10:10-11:02am, BRKI 166 (& Zoom) |
Lecture | Prof. Chris Dancy (Section 02) | MWF 2:10-3:02pm, Zoom only |
Lecture | Prof. Sam Gutekunst (Section 03) | MWF 4:50-5:42pm, BRKI 066 (& Zoom) |
Lab | Prof. Sam Gutekunst (Section 60) | Th 12:40-2:32pm, Remote |
Lab | Prof. Sam Gutekunst (Section 61) | Th 10-11:52, Remote |
Lab | Prof. Chris Dancy (Section 62) | Th 7:40-9:32am, Remote |
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.
Lectures for this course can be attended over Zoom. Students are highly encouraged to attend Zoom lectures to participate in engagement activities, ask questions live, etc. You will benefit from attending the classes synchronously. If you are unable to attend lectures:
As a student and citizen of the Bucknell University community:
Students are expected to read and abide by the principles clearly explained in the Student Handbook. Under no circumstance, should any student submit work that is not of his or her authorship. If a deadline is tight, or impossible, before getting desperate, talk to your instructor. It is better to be late than dishonest. Remember that your instructor's main goal is to give you the best opportunities to learn.
The university has a set of web pages that describe what we understand for Principles of Academic Responsibility and how it deals with cases of violations of these principles (Student Code of Conduct.) Your instructor will make every effort to explain in detail the collaboration policy for each specific assignment. Before you start your work, make sure to read and understand this policy. Should any questions arise, contact your instructor immediately to have them clarified
Courses at Bucknell that receive one unit of academic credit have a minimum expectation of 12 hours per week of student academic engagement. Student academic engagement includes both the hours of direct faculty instruction (or its equivalent) and the hours spent on out of class student work.
Pay attention to the percentages. Consider how much an assignment is worth before you lose 5 gazzilion hours of sleep over it! Note that we're grading a bit differently this semester (everything is Projects+Engagement+Labs). There are no exams/quizzes.
Category | Weight |
---|---|
Projects | 45% |
Engagement | 30% |
Quizzes | 10% |
Labs | 15% |
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.
Starting with project 2, you will only be able to partner with someone in section 02.
There will be roughly 12 labs throughout the semester, each taking roughly 3-4 hours. Labs will always be released on Thursday and due the following Wednesday at 10pm. You are highly encouraged to start your lab on the Thursday that it is released on: either by attending your 2 hour lab session remotely, or by creating your own 2 hour block. Policies for labs include:
There will be a short 20 minute weekly quiz in this class. Quizzes will be via gradescope, and will be available from Friday morning through the following Monday at 10pm. You just need to pick some 20 minute slot during that block to do it. Generally, you’ll be given information about the quiz ahead of time (“for this week’s quiz, you’ll need to analyze the run time of an algorithm”). Your lowest quiz grade will be dropped. Because of these regular quizzes, there will be no midterms!
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. There will generally be no make-ups for material that contributes towards the engagement grade, however there may be opportunities for extra credit through attending certain community academic events and/or lectures.
Everyone will have to do a weekly reflection (journal), some weeks I may provide a prompt for response. On weeks where there is no prompt, I'll expect you to reflect upon your status in the class and how you are doing. (Did you learn something new, find something interesting, and/or are you stuck on something? Talk about it here :-) ). One journal per week, make-ups may be granted, but only upon request and approval.
The hybrid nature of this course facilitates many ways to productively participate in this class:
Everyone must sign-up to contribute to weekly in-class notes. In groups of students, you’ll take the lecture contents and code demos of one week and merge them into a “textbook chapter.” Examples will be shown in the first week of class. At the end, you’ll have written a document for reference (extremely useful for any coding interview!) and will have completed a collaborative project to be proud of. Throughout the class, you and your peers will have a resource to supplement lectures.
Starting 28-September (with Prof. Dancy):
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.
Any student who needs an accommodation based on the impact of a disability should contact the OAR at OAR@bucknell.edu; 570-577-1188 or complete the Disability Accommodation Request form (https://bucknell-accommodate.symplicity.com/public_accommodation/). The OAR will coordinate reasonable accommodations for students with documented disabilities.
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 College of Engineering at Bucknell University steadfastly affirms our commitment to our students, staff, and faculty. Regardless of race, ethnicity, or nationality, gender, gender expression or sexual orientation, religion or belief system, economic status, or ability, you are a valued, respected, and essential member of our community. By virtue of joining this community, all members commit to welcome others in the same manner. We will not tolerate mistreatment or disrespect of persons for any reason by members of our community. The College of Engineering strives to offer a safe environment for learning, growth, inquiry, and the respectful sharing of ideas for all.
We have a moral and professional obligation to share the responsibility of always treating each other with respect and dignity, even when we disagree. However, we will not question or leave room for disagreement about the value of different human beings. Engineers investigate and solve problems, sometimes very challenging ones. An important method for such investigations and solutions is through the exploration of ideas in conjunction with the unquestioned support and value of persons. We can all engage in such processes when we feel and are comfortable and safe as members of a community.
Your suggestions to help the College meet this commitment are encouraged and appreciated. If something occurs in class that makes you feel uncomfortable, please talk to me about it. Other resources for you include your instructors, department chairs, and Associate Dean Terri Norton (trn005@bucknell.edu). Instead or additionally, you may file a bias incident report at https://www.bucknell.edu/life-bucknell/health-wellness-safety/bias-incident-policy. This report may be filed anonymously if you so choose. The College of Engineering commits to working alongside students expressing concerns and/or making reports to empower them in any follow-up actions and to ensure that they are protected from repercussions of any kind.
This class may be recorded on the Zoom platform for purposes of making it available to other
students who are enrolled in the class who will be accessing the class remotely. The
recording will be maintained confidentially and will only be accessible to other students
enrolled in this class (i.e. the three sections of CSCI 204 this spring). Prior to entering the Zoomclass session, you will receive notice that your consent will be required to attend the recorded class session. Students who consent to participate will have the opportunity to modify the session’s settings by turning off the microphone, turning off the video; etc. Students who choose not to participate in the recorded session may exit the session and notify me of that decision. Students who are unwilling to consent to participate in the recorded session may access the recorded class after the recording is finished.
ZOOM RECORDINGS AS AN EDUCATION RECORD – Zoom recordings that are maintained by the University and that document personally identifiable student information are “education records'' as defined by the Family Education Rights and Privacy Act (“FERPA”) and must be maintained confidentially and disclosed only in accordance with the authority provided by FERPA. Any Zoom recording facilitated by the license provided by the University is considered an education record as described herein, regardless of whether the recording was created under the direction of 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 Moodle. Check your Bucknell email and Moodle at least daily.
Syllabus was written by Prof. Dancy, but has graciously borrowed wordin from Prof. Peck, and Prof. Gutekunst.