Syllabus

Description

This course is an introduction to standard patterns and techniques in algorithm design and tools for analyzing algorithmic performance. Students learn to evaluate algorithms, design new algorithmic solutions, and communicate the correctness and usefulness of their solutions.

Learning Outcomes

By the end of this course, students will be able to:

  • analyze the performance of algorithms using standard techniques,
  • apply known algorithms and algorithmic techniques to solve real-world problems,
  • justify algorithmic solutions to computing problems, and
  • typeset a basic LaTeX document to clearly present their ideas.

Class Resources

All assignments, announcements and other resources for the class, including this syllabus, can be found on this class web page.  You are responsible for checking the class schedule page daily for reading and other assignments.

Textbook

Introduction to Algorithms, Fourth Edition by Cormen, Leiserson, Rivest, and Stein.

Piazza

Class discussion and Q & A for this class will take place on our class page on Piazza.  Piazza is designed specifically as a question and answer platform.  When you have questions about work in the course, please post them on Piazza rather than sending me an email.  I will not answer questions about coursework via email unless they are of a personal nature.  I will receive an email alerting me the moment something is posted on Piazza, and I will do my best to answer questions there in a timely manner.  Piazza is designed to also allow students to collectively edit a student answer to any question, and I strongly encourage you to do so!  This may be especially beneficial at odd hours when you are awake, and I am not!

You should have received an email invitation to enable your Piazza account and join the class.  After you log in, please read the “Welcome to Piazza!” post to familiarize yourself with the platform.

LaTeX and Overleaf

LaTeX is a typesetting program almost universally used by computer scientists and mathematicians. It allows us to create beautifully typeset mathematical documents. To write a document in LaTeX, we use a markup language that describes both the content of the document and how we want it formatted. We will cover an introduction to LaTeX in the first recitation session.

LaTeX is free software and available on virtually every computing environment. You can download and install it on your computer or you can use a web-based system called Overleaf that requires no local installations. An advantage of Overleaf is that is also enables collaborative editing of documents.

Using the links above, either install LaTeX on your computer or create an account on Overleaf. You will need one of these for our first recitation session on Thursday.

Academic Engagement and Attendance

Your active participation is absolutely essential to your success in this class.  I cannot emphasize this enough!  By simply attending class and doing a minimal amount of work, you will both learn very little and earn a very poor grade.

It is very important that you keep up with the coursework on a daily basis; consistency is the key. When reading is assigned, actually do the examples on a computer. We will usually use the reading as a starting point for each class discussion rather than rehash everything that you read the night before.  

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 work.

Attendance

Your attendance is expected at each class meeting.  Your grade will almost certainly suffer indirectly if you choose not to attend. In addition, I may consider attendance when assigning grades, especially in borderline situations. Of course, previously arranged and unavoidable absences (sickness, family emergencies, varsity athletic participation) will not be held against you. To the extent possible, absences should be communicated to me in advance. You are responsible for the content of reading assignments, lectures and handouts, as well as announcements and schedule changes made in class whether or not you are present. If you must miss a class, be sure to check with me or another student to get what you missed. Quizzes and exams will be given in class on the day scheduled and may not be made up unless arrangements have been made with me in advance.

Health-related Absences

Oftentimes, with the best of intentions, students attempt to report to class despite feeling ill. If your symptoms resemble monkeypox, COVID-19, or another serious transmissible illness, it is best to stay home as your health and well-being as well as that of our whole community must be our priority. Students who have symptoms or test positive for either disease or will be absent for three days or more due to illness should follow the guidelines set by Student Health and reach out to their academic dean who will notify their professor of a prolonged absence.

Homework Policies

There will be a number of programming assignments given during the semester which will be due in class on the date specified.  No late homework assignments will be accepted, unless arrangements have been made with me well in advance.  

All assignments must be typed in LaTeX and submitted as PDF documents.

Please note that if I assign a homework or project n days before it is due, that is because I expect it will take n days, more or less, to complete well.  Therefore, get started on, or at least familiarize yourself with, assignments right away.  To reinforce this, I will not answer substantive questions about an assignment on the day that it is due.  Those last few hours should only be spent putting the finishing touches on your work.

If you receive a grade of 80% or below on an assignment, you will have an opportunity to revise and resubmit it.  The second version will be due 3 days after I hand back the first version.  Your final grade for the assignment will then be the average of the two scores.

Recitation

In your weekly recitation section, you will participate in interactive and group work to reinforce understanding and explore applications.  Recitations are about practicing the ideas and techniques from the class, not getting the right solution.  You will be solving problems in small groups, and your participation in those groups and effort towards solutions will be the basis of your recitation grade, not your solutions.  You will not submit recitation work. 

Tips for Success

  1. Consistent, daily work is the key.  If you spend an hour or two every day, this course is quite manageable, and you will learn more effectively.  Do not try to do all the work for this class in one or two long sessions each week.  Keep up with the reading and complete assigned reading before class.  Start thinking about homework assignments and projects the day they are assigned.  Aim to be done at least a day early so you have time to polish your program and hand in your best work.
  2. Ask questions. If you are having trouble understanding something, ask questions right away – before class, in class, after class, in my office, during help sessions.  There is plenty of help available, but it is up to you to seek it out.  Everything in this class is cumulative; the further you get behind, the harder it becomes to catch up.
  3. Test yourself often. On exams you will be expected to write code on paper for problems that are similar to homework exercises.  So it is important to practice this on your own.  Choose some previous exercises, or some new ones from the book, and work out the answers on paper without looking at the solution.  When you are done, you can check your answers by trying out your solution on the computer.  Testing yourself often has also been shown scientifically to improve learning!
  4. Be patient but persistent.  Some of the concepts in this class take a while to sink in.  Try not to get frustrated if it doesn’t make sense right away.  Keep doing examples and ask a lot of questions.  Don’t give up!  With sufficient effort, it will eventually click.

Grade Determination

Course ComponentPercent
Recitation10%
Homework Assignments (~10)30%
Projects15%
Midterm exams (2)25%10% and 15%
Final Exam20%Tue, Dec 13 at 3:30

Notice that the percentages assigned to the homework assignments increase over the course of the semester. The first two are each worth only 1% of your grade but the last two are each worth 5%. The three exams are weighted in a similar way. So greater weight is attached to your understanding of concepts later in the course. This ideally gives everyone a chance to get accustomed to the course work at the beginning and recognizes the scientifically proven fact that different people learn at different rates.

Values and Commitments

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. We 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 individuals. We can all engage in such processes when we feel comfortable and safe as members of a community.

Your suggestions to help the University 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 Deans Terri Norton (trn005@bucknell.edu) and Erin Jablonski (erin.jablonski@bucknell.edu). Instead or additionally, you may file a bias incident report using this link. 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.

Professionally, we adhere to ACM’s Code of Ethics. Computer science has a checkered history with respect to inclusion — in corporate environments, in our classrooms, and in the products we create. We strive to promote characteristics of transparency and inclusivity that reflect what we hope our field becomes (and not necessarily what it has been or is now).

We reject behavior that strays into racism or harassment. Such behavior (whether verbal, written, or actions) may relate to others’ race, gender, faith, or sexual orientation, among virtually innumerable professionally irrelevant characteristics (e.g., religion, [dis]ability, age, etc.); sexual images in public spaces; deliberate intimidation, stalking, following, harassing photography or recording, disruption of meetings, inappropriate physical contact, and unwelcome sexual attention.

If you believe someone is violating these principles (for example, with a joke that could be interpreted as sexist, racist, or exclusionary), please feel empowered to speak up. If the behavior persists, send a private email to your instructor to explain the situation. While we will preserve anonymity when possible, also be aware that we are required by law to report incidents of sexual misconduct or relationship violence.

We are here for you. Life can be full of uncertainties and hardships. You may find yourself in tough situations such as being sick, having to care for someone who is sick, having a hard time coping with a personal crisis, or even facing food insecurity. If you find yourself in a predicament that is weighing on you, please get in touch with us. We will work with you to make the accommodations necessary to help you out and we will try our best to help you. Please believe that we are invested in supporting you.

Mental Health and Wellness

I recognize that trying to balance your academic pursuits with your non-academic life and interests can sometimes be stressful. 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 for help.  Alternatively, I encourage you to contact your Associate Academic Dean or the Dean of Students at 570-577-1601 for support.  If immediate mental health assistance is needed, call the Counseling & Student Development Center (CSDC) at 570-577-1604 (24/7).  You can also visit the CSDC web site for additional information.

Basic Needs Security

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.

Academic Responsibility

We expect all students to read and abide by the principles clearly defined in Bucknell’s academic responsibility policy and, in particular, the Bucknell Honor Code:

Bucknell Honor Code

As a student and citizen of the Bucknell University community:

  • I will not lie, cheat or steal in my academic endeavors.
  • I will forthrightly oppose each and every instance of academic dishonesty.
  • I will let my conscience guide my decision to communicate directly with any person or persons I believe to have been dishonest in academic work.
  • I will let my conscience guide my decision on reporting breaches of academic integrity to the appropriate faculty or deans.

Appropriate Internet Use and Collaboration

In this class, and Computer Science classes in general, this means that:

  • You are allowed to use online resources to help you understand a topic in this course (but I’d prefer if you come to my office hours instead). 
  • Any online sources that you use must be cited. 
  • You are not allowed to search for specific solutions to problems you are assigned.
  • You are allowed to talk to students about approaches to a problem and resources they used to help them solve problems. In fact, you probably should — that’s one of the advantages of being at a school like Bucknell. 
  • On individual assignments, you are not allowed to show another student your solution on an individual project or assignment.  (In group assignments, don’t show another group!)  This means that you should not let another student “borrow” your solution. This is the most common case that we (regretfully) bring to the Board of Review. 
  • If you have read this far, click here now to let me know!
  • You also are not allowed to publicly post your solutions for assignments in this class. 

Special Accommodations

If you have a disability and think you may need an accommodation, I encourage you to contact the Office of Accessibility Resources (OAR) at 570-577-1188 or OAR@bucknell.edu. The OAR is here to help and will work with you to determine appropriate accommodations. If accommodations are needed, the OAR will communicate those to me through a Letter of Accommodation. I will not be given information about the nature of your disability, only the accommodations you need. I will treat any information I receive as private and confidential. Please visit the Accessibility Resources page for more information about the OAR.

Acknowledgement

This syllabus has benefitted from the ideas and practices of previous CSCI 311 instructors.

Have a great semester!  If you need anything, please let me know.