binary-trees: Allocate and deallocate many many binary trees
n-body: Double-precision N-body simulation
fasta: generate DNA sequences
reverse-complement: write DNA reverse complement
sudoku: solving 20 extremely hard Sudokus repeated 50 times
matmul: multiplying two 100x1000 matrices
patmch: finding lines matching a complex regexp
Project Plan
Week
Description
Week 3 (Jan.19 ~ Jan.25)
Implement two algorithms: pidigits and binary-trees in Javascript, Ruby and Python. Estimate their performance in several aspects.
Week 4 (Jan.26 ~ Feb.1)
Implement three algorithms: n-body, reverse-complement and k-nucleotide. Estimate their performance in several aspects.
Week 5 (Feb.2 ~ Feb.8)
Explore and find two algorithms in cryptographic engineering and estimate their performance
Week 6 (Feb.9 ~ Feb.15)
Implement Sudoku solving n different programming language. Estimate their performance.
Week 7 (Feb.16 ~ Feb.22)
Implement Pattern Matching and Matrix multiplication in different programming language. Estimate their performance.
Week 8 (Feb.23 ~ Mar.1)
Estimate and validate how much the use of languages we choose cost when run using different instance sizes on cloud infrastructures, e.g. AWS and Azure
Test Environments
Benchmark machine:
CPU: Intel(R) Core(TM) i5-7300HQ CPU @ 2.50GHz
Memory: 8GB
OS: Ubuntu 14.04 LTS VM
Benchmarking & evaluation tools:
Ruby: benchmark, get_process_mem
Python: psutil, time, subprocess
Javascript: js-shell
mem, psutil & time, subprocess & js-shell
Profilers (tracing):
ruby-prof; cProfiler
Hoow To Run
For every program, we enable the user input. To run the program, type python3 / ruby / js, plus script name and input value.
We put pigits here to illustrate how to run, other scripts are almost same.