CSci 493 Syllabus        FAQ



Syllabus

CSci 493: Algorithms for Tree Distributions
Department of Computer Science
Hunter College, City University of New York
Fall 2022

Description: 3 hours, 3 credits: Hands-on honors algorithms seminar with coding, design, group work, and presentations. Students will learn how to access, read and evaluate credible literature, develop a research problem and hypothesis, select an appropriate methodology, and how to write a short research proposal. Topics focus on algorithms for analyzing, comparing, and visualizing trees. This course is an undergraduate research seminar designed to study research methods in computer science and to support students in the implementation of an independent student project.
Prerequisites: CSci 265 and CSci 335.
Instructor: Dr. Katherine St. John.
Meetings: Wednesdays, 10am-12:30pm, 1001E Hunter North, in-person.
Course Email: trees@hunter.cuny.edu.
Office Hours: Office Hours.

Grading Policy

Course Format: This seminar will be run as a research methods course, meeting once a week (Wednesday mornings) in an in-person format. While primarily be in-person, some hybrid meetings will be scheduled when outside speakers are remote. Each class meeting will be include collaborative challenges that recap trees, graphs and algorithms, as well as introduce new material. The focus will be on building competency in algorithmic design and implementation, understanding and presenting tree-focused research papers, and implementing related algorithms with well designed and well documented code.

Expectations: Participating in class and completing programming challenges are an essential part of the learning experience. Students are expected to learn both the material covered in class and the material in the textbook and other assigned reading. Each student is expected to complete and present at least two projects (either individually or as part of a team) over the course of the course.

Honor Code: You are encouraged to work together on the overall design of the programs and homework. However, for specific programs and homework assignments, all work must be your own (or of your group, if submitting group work). As a general rule, do your own typing. Submitting work of others, or not safeguarding your work from copying, are academic integrity violations. You are responsible for knowing and following Hunter College's Academic Integrity Policy:

Hunter College regards acts of academic dishonesty (e.g., plagiarism, cheating on examinations, obtaining unfair advantage, and falsification of records and official documents) as serious offenses against the values of intellectual honesty. The College is committed to enforcing the CUNY Policy on Academic Integrity and will pursue cases of academic dishonesty according to the Hunter College Academic Integrity Procedures.
All incidents of cheating will be reported to the Office of Student Conduct in the Vice President for Student Affairs and Dean of Students office.

Participation: Participation is measured by your involvement in lecture as well as the collected classwork.

Programming Assignments: Assignments are posted on the class website, usually two weeks before the due date. They reinforce concepts covered in lecture and serve as building blocks for the classwork and the semester-long projects.

Projects: Two semester-long projects are part of the course. The grade for the project is a combination of grades earned on the milestones (e.g. deadlines during the semester to keep the projects on track) and the overall submitted program.

Quizzes and Exams: There are no quizzes or exams. Instead, assessment of mastery of the material will be via programming assignments, participation in class, and presentations of your progress on your projects over the course of the semester.

Grades: The grading for the course will be based on:

Materials, Resources and Accommodating Disabilities

This is a zero cost course. All textbook materials are freely available to enrolled students.

Textbook & Readings: The following free on-line books are required for the course:

Additional readings and tutorials are available on the resources page.

Technology: This is a programming-intensive course in the Python programming language. See the resources page for obtaining the Python program and the packages used, links for the submitting assignments and assessments. All software used is freely available.

Computer Access: A computer (capable of running Python 3) is needed complete the on-line assessments, and programming assignments and projects. Hunter College is committed to all students having the technology needed for their courses. If you are in need of technology, see Student Life's Support & Resources Page.

Accommodating Disabilities: In compliance with the American Disability Act of 1990 (ADA) and with Section 504 of the Rehabilitation Act of 1973, Hunter College is committed to ensuring educational parity and accommodations for all students with documented disabilities and/or medical conditions. It is recommended that all students with documented disabilities (Emotional, Medical, Physical, and/or Learning) consult the Office of AccessABILITY. For further information and assistance, see their contact page.

Hunter College Policy on Sexual Misconduct: In compliance with the CUNY Policy on Sexual Misconduct, Hunter College reaffirms the prohibition of any sexual misconduct, which includes sexual violence, sexual harassment, and gender-based harassment retaliation against students, employees, or visitors, as well as certain intimate relationships. Students who have experienced any form of sexual violence on or off campus (including CUNY-sponsored trips and events) are entitled to the rights outlined in the Bill of Rights for Hunter College.

See CUNY Policy on Sexual Misconduct Link.

Course Objectives

At the end of the course, students should be able to:
  1. Strengthen programming skills with trees and graphs.
  2. Write well-documented code and accompanying test suites that demonstrate correctness.
  3. Critically read and analyze computer science journal articles.
  4. Successfully use standard techniques, such as dynamic programming and network flows, to efficiently implement algorithms.
  5. Analyze running time and space constraints using recurrence relations and amortized analysis.
  6. Understand approaches for NP-hard problems including approximation algorithms and fixed parameter tractable approaches.
  7. Effectively communicate research questions, methods and outcomes in oral, written and graphical forms to a broad audience using appropriate tools.