Python 3. High level programming language for algorithms with extensive library support (for example, Numpy for computation heavy numerical/scientific tasks). We recommend (but do not require) using Python 3 or Java for the course.
- Python Anaconda Distribution for Scientific Computing (Get 3.7): https://www.anaconda.com/distribution/
- Free Pycharm Development Environment: https://www.jetbrains.com/pycharm/
- Python tutorial: https://docs.python.org/3/tutorial/
- Python Numpy tutorial: http://cs231n.github.io/python-numpy-tutorial/
- Numpy Documentation: https://docs.scipy.org/doc/
- Tutorial on optimizing scientific code: http://scipy-lectures.org/advanced/optimizing/
Java. High level object oriented programming language for scalable software design with extensive standard library support. We recommend (but do not require) using Python 3 or Java for the course.
- Primary Java Site and OpenJDK Java SE download
- Free IntelliJ Development Environment
- API documentation and general documentation
- The Official Tutorials
- W3 Schools Java Tutorials
Finding and Reading CompSci Research Papers.
- ACM (primary Compsci professional society) Digital Library: https://dl.acm.org. To get access to full papers through Duke go to https://library.duke.edu/find, click on “Research Databases” and search for the ACM Digital Library.
- IEEE (primary engineering professional society) Xplore: https://ieeexplore.ieee.org/Xplore/home.jsp. To get access to full papers through Duke go to https://library.duke.edu/find, click on “Research Databases” and search for the IEEE Xplore Digital Library.
- Griswold notes on reading a research paper in CS: https://cseweb.ucsd.edu/~wgg/CSE210/howtoread
LaTeX. Recommended for typesetting mathematics heavy text. LaTeX is the standard for research publications in computer science. All assignments for the course must be typed; LaTeX is the recommended way, but is not required (if, for example, you prefer to use Microsoft Word or some similar software for writing reports).
- Get LaTeX on your device: https://www.latex-project.org
- Overleaf: online LaTeX editor: https://www.overleaf.com
- LaTeX tutorials and guides: https://www.overleaf.com/learn/latex/Tutorials
- Knuth notes on mathematical writing: http://jmlr.csail.mit.edu/reviewing-papers/knuth_mathematical_writing.pdf
Git. Useful for version control of your code.
- Duke GitLab: https://oit.duke.edu/what-we-do/applications/gitlab
- Pro Git book: https://git-scm.com/book/en/v2
Gradescope
- If you are unfamiliar with Gradescope or aren’t sure how to submit your assignment, see: https://www.gradescope.com/help#help-center-section-student-workflow