A CSD course at BITS Pilani
Resources
The primary resources for this course are the lecture slides, notebooks, and assignments on this page. For the latter part of the course, the reading material provided is very important too. You can access the slides and homeworks individually through this page, or if you're interested in downloading/viewing all of them at one place, go to this repository.
Assignments
These assignments will be used for evaluation (see Structure for more information) , but more importantly they are there for your own learning and self-evaluation. Make sure you start working well ahead of the deadlines, and feel free to take help if you're stuck. While submitting code, make sure that you adhere to the style guide for Haskell, and PEP-8 for Python.
Lecture Slides
Here you'll find the lecture slides/notes/homeworks (see structure), for the regular class hours, and links to reading material for the course.
- Lecture 1: Python eat Python: Problems with Recursion or Recursion with Problems?
[Slides] [Notes] - Lecture 2: Python Dance: Python Syntax and Solving Problems
[Slides] - Lecture 3: Do the FP Shake - Intro to FP
[Slides] [Notes] - Lecture 4: You Haskell - Haskell Syntax
[Notes] - Lecture 5: Dynamic Programming
[Slides] - Lecture 6: 99 Problems and Assignment 1
[Other] - Lecture 7: Making Types in Haskell
[Notes] [Other] - Lecture 8: Currying and Higher Order Functions
[Other] - Lecture 9: Lazy Evaluation in Haskell
[Other] - Lecture 10: Game Trees and the Minimax Algorithm
[Other] - Lecture 11: Bread Butter Haskell - Maps and Filters
[Notes] [Video] [Code] - Lecture 12: IO and Competitive Programming
[Other] [Video] - Lecture 13: Types, Tuples, and Ted (Doubts and Assignment 2)
[Other] [Video] - Lecture 14: Classes in Python and Term Project
[Video] [Code] - Lecture 15: The Python Challenge (Fun Day Treasure Hunt!)
[Notes] - Lecture 16: Classes in Python and the Term Project part 2
[Video] [Code] - Lecture 17: The Universality and Expressiveness of Fold
[Notes] [Video] - Lecture 18: Python and the Term Project part 3
[Video] [Code] - Lecture 19: QuickSort, Correctness Proofs, and the class Ord
[Other] [Video]
Misc Links
- Automate the Boring Stuff with Python
- Cracking Codes with Python
- Making Games with Python
- 99 Haskell Problems (Assignment-1)
- Python Documentation
- Hackage - The Haskell Package Repository
- Learn You a Haskell
- Real World Haskell
- CodeWorld (interesting Haskell GUI Package)
- Git and Github (CS50 Beyond) by Brian Yu
- Lambda Calculus Notes (CSE, IIT Bombay) by Rushikesh K. Joshi
- Game Trees (Carnegie Mellon Recitation Notes)
- Minimax and Alpha Beta Pruning (Cornell Recitation)
- Haskell Style Guide
- Python Style Guide (PEP-8)