Name: Jesse Chong
Uni: jlc2332
Final Project: Palindrome Partitioning (PalPar)
Hello, this is the readme file for my final project "Palindrome Partitioning" or in short "PalPar". This project was for Professor Edwards' COMS W4995 Parallel Functional Programming at Columbia University.
Class link - http://www.cs.columbia.edu/~sedwards/classes/2021/4995-fall/index.html
Commands:
General usage:
stack clean && stack build && stack test
stack clean
stack build
stack test
Running against test cases:
stack exec PalPar-jlc2332-exe ./test/ValidCases/alphabet8.txt s 1
stack exec PalPar-jlc2332-exe ./test/ValidCases/alphabet8.txt s 1 -- +RTS -N4 -s
stack exec PalPar-jlc2332-exe ./test/ValidCases/alphabet8.txt p1 1
stack exec PalPar-jlc2332-exe ./test/ValidCases/alphabet8.txt p1 1 -- +RTS -N4 -s
stack exec PalPar-jlc2332-exe ./test/ValidCases/alphabet8.txt p2 1
stack exec PalPar-jlc2332-exe ./test/ValidCases/alphabet8.txt p2 1 -- +RTS -N4 -s
Viewing event log in ThreadScope:
threadscope PalPar-jlc2332-exe.eventlog
Acknowledgements:
Special thanks to Professor Edwards for the class and to Max Helman for TA'ing me over the project. I had a lot of fun learning about Haskell and working on the homeworks!
References:
- Course lectures:
- Class discussion board:
- Leetcode problem this project was based off of:
- Referenced the GeeksForGeeks Python and C++ implementations to write the algorithms used in this project. Verified that my code was working by comparing results of my program to the Python solution given in the page:
- Referred to Haskell docs to create this project directory.
- General ThreadScope installation and usage.
- Parallel library documentation.
- HUnit guide.
- Cabal FAQ for debugging dependency issues.
- StackOverflow discussion on threading.
- StackOverflow discussion on chunking.
- StackOverflow post to resolve trouble using rdeepseq due to NFData typing error.
- Global variables in Haskell article.
- Haskell docs on various RTS options.
- "-Wall" option wasn't working until I added it under "library" in "package.yaml" like this post mentions: