Topics in Advanced Computing
MAT 4230
4 credits
Fall 2024
Meeting Times: Mondays and Thursdays, 10:30 - 12:10
Location: Humanities 2034
Instructor: Professor Abdul-Quader (or just “Athar”)
Email: athar.abdulquader AT purchase DOT edu
Office Hours: Mondays and Thursdays, 9 - 10 AM NSB 3003
Inclement Weather Hotline: 914-251-7500
Course Description
Prerequisite: Computer Science II
“Topics are selected from computability, complexity, artificial intelligence, machine learning, programming languages, data mining, informatics in biology and medicine, cryptography, and other application areas. This course does include topics in theoretical computer science, which has a strong mathematical component, as well as attention to current practical problems. Includes oral presentations by students on approved topics of their choosing.”
The above description is from the department webpage. This semester, I plan to organize the course as follows:
- I will focus on teaching functional programming in Haskell. We will learn the difference between functional and imperative programming, the pros and cons of each, and use this different paradigm for solving problems in the Haskell programming language.
- In addition, each student will be required to independently learn about one advanced topic of their choosing from computer science. Students would be responsible to write two short papers explaining the topic. In addition, students are expected to present at least three times during the semester, in the hopes that we can learn from each other. A small, but not exhaustive, list of possible topics students can choose from:
- Database systems
- OSI stack (networking)
- Operating Systems
- Machine Learning / Artificial Intelligence
- Computer Vision
- Natural Language Processing
- Compilers / Interpreters / Translators
- Logic Programming (Prolog)
- Declarative / Imperative Programming Paradigms (might be too closely related to our course material)
- Computability Theory
- Complexity Theory
- Cryptography
- Quantum Computing
- Computer Architecture
Students should contact me if they are having trouble finding a topic that they are interested in.
We may also have guest lecturers coming in from time to time. I will announce these in class and on BrightSpace.
Learning Outcomes
In parentheses below, you can see how the course learning outcomes map to the Mathematics / CS Program Learning Outcomes.
Upon completion of this course, students should be able to…
- Develop basic algorithms that avoid assigning to mutable state. (PLO 1, 2)
- Develop useful functions that take and return other functions. (PLO 1, 2, 5)
- Explain the distinction between the functional and object-oriented programming paradigms, along with the pros/cons of each (PLO 3, 4, 5)
- Explore an advanced topic in computer science independently (PLO 4, 5)
- Oral presentation and technical writing skills (PLO 3)
Required Textbook
Learn You a Haskell For Great Good! (Available for free online.)
For your own topics, you will need to find your own materials. I am happy to assist you in office hours in your search for materials. For some of these topics, I can loan you a textbook for the semester, while for others I can suggest materials that we find online.
Software / Tech Requirements
- Haskell: you must install GHC. Make sure to answer yes to installing cabal, stack, and hls (Haskell Language Server).
- Visual Studio Code
- Haskell extension for VSCode.
- GitHub Classroom: you will need a GitHub account. Information will be provided soon.
Grading Rubric
- 10%: Classwork (class exercises) / short responses / exit tickets?
- 40%: Problem Sets / Programming assignments (4 x 10%)
- 15%: Presentations (3 x 5%)
- 15%: Midterm Paper (3-5 pages double spaced)
- 20%: Final Paper (5-10 pages)
Note that there are no exams in this course. Problem sets will be challenging, but you will have ample time to complete them. I suggest forming study groups, but everyone should write up their own solutions. Come to office hours as much as possible.
The page requirements for the papers are “ballpark” ranges.
Attendance
I understand that there may be times you miss a class due to emergencies, illnesses, and other reasons. For this reason, I post the lecture notes online and on BrightSpace. If you miss a class, be sure to submit any work that was due that day, find out what work you missed, and catch yourself up. You can use my office hours or work with others in class to help catch yourself up.
Late Homework Policy
The topics in this course are cumulative, and so it is important to stay on top of your work when it is assigned. If you miss a class or fall behind, you still need to stay on top of the work that was covered. Do your best to stay current with the work, using all the resources at your disposal to help you.
If, due to emergencies or illnesses, you require some flexibility, you can reach out to me and we can discuss what you can do to make things up. However, if you fall behind on work and submit work late, I will have less time to actually look at it, grade it and provide meaningful feedback. If work is submitted too late, I reserve the right to simply give it a zero and move on if I do not have time to look at it.
Collaboration Policy
You are encouraged to discuss homework assignments with other students. All individual assignments must be completed on your own, however. There is a clear difference between copying someone else’s work and discussing a problem with another person. The latter is encouraged. Plagiarising another student’s work can lead to academic sanctions as per Purchase College’s Academic Integrity Policy: https://www.purchase.edu/live/blurbs/840-academic-and-professional-integrity
Office of Disabilities
It is my goal that this class be an accessible and welcoming experience for all students, including those with disabilities. You are welcome to talk to me at any point in the semester about course design concerns, but it is always best if we can talk as soon as possible about the need for any modifications. The Office of Disability Resources collaborates directly with students who identify documented disabilities to create accommodation plans, including testing accommodations, in order for students to access course content and validly demonstrate learning. For those students who may require accommodations, please call or email the Office of Disability Resources, (914) 251-6035, odr@purchase.edu.
Tutoring
Tutoring is available in the Einstein Corner, located in the Natural Sciences Building room 3046. Note: this is an upper-level elective, and so they might not have a tutor who has taken this course. I suggest forming study groups with each other, and coming to office hours regularly.
Wellness and Mental Health
Purchase College has many resources to support our students’ wellness and mental health. Please take a look at the Health and Wellness website for more information. In particular, check the Counseling Center’s website to learn about the various services that the Counseling Center has to offer, including remote counseling, emergency resources, hotlines, and referrals. Take care of your mental health!
Course Outline
Due to the nature of a course in which I will be inter-leaving lectures with student presentations, I will not provide a timeline for the lectures. However, I hope to cover the following topics (parentheses denotes the relevant textbook chapters):
- Basics of functional programming with Haskell (Chapters 1 and 2)
- Lists (Chapter 2)
- Types / typeclasses (Chapter 3)
- Basic Function Syntax (Chapter 4)
- Recursion and Higher-order functions (Chapter 5)
- Modules (Chapter 7)
- Defining Types (Chapter 8)
- I/O (Chapter 9)
- Functors (Chapters 10-11)
- Monads (Chapters 12-13)
We might not cover everything in the text, and we will likely go out of order at times. I will make a note of which sections/chapters we should read in class or on BrightSpace. I will also do my best to summarize these in my lecture notes.