Elements-of-Software-Design
                                
                                
                                
                                    Elements-of-Software-Design copied to clipboard
                            
                            
                            
                        Elements-of-Software-Design
General Study Guide for Course Elements of Software Design CS313e
Preparation for Class
- Read the notes posted online for the day.
 - Read the relevant sections in the book. Each day's reading is given in the schedule.
 - You do not have to understand everything that you read. Make a list of questions. ASK in class!
 
Follow Up After Class
- Try out a few of the programming exercises in GeeksForGeeks, LeetCode, or Kattis.
 - If you have problems, visit the TAs during office hours. Sign up and we will help you with your program.
 - If you are not programming, you are not studying.
 - Your study time will be approximately 10 hours per week. Schedule your time accordingly.
 
Python Links
- Python Programming Language
 - Python Reference Manual
 - How to Think Like a Computer Scientist
 - Python Course
 - python cheat sheet
 
Online Python Run and Memory Visualization
- https://pythontutor.com/
 - https://trinket.io/
 
Python Tutorials
- Official Python Tutorial
 - Real Python
 - Dive Into Python
 - Python Regular Expressions
 - Python Regular Expression Info
 - Python Regular Expression Debugger
 
Online Programming Challenges
The following websites provide a good set of programming challenges that you can use to improve your programming knowledge and expericence.
- Leet Code https://leetcode.com/
 - hackerrank https://www.hackerrank.com/
 - hackerearth https://www.hackerearth.com/
 - codingbat https://codingbat.com/python
 - Geeks for Geeks https://www.geeksforgeeks.org/
 - Kattis https://open.kattis.com/
 - Python Challenge http://www.pythonchallenge.com/
 - Project Euler http://projecteuler.net/
 - Challenging Programs from ACM http://uva.onlinejudge.org/
 - Ruby Quiz http://rubyquiz.com/
 - Code Kata http://codekata.com/kata/codekata-intro/
 - Riddles http://www.ocf.berkeley.edu/~wwu/riddles/intro.shtml
 
Online Websites about Algorithms
- Animation of Sorting Algorithms https://www.toptal.com/developers/sorting-algorithms
 - Binary Search Tutorial https://www.hackerearth.com/practice/algorithms/searching/binary-search/tutorial/
 - Time Complexities for Sorting Algorithm https://www.geeksforgeeks.org/time-complexities-of-all-sorting-algorithms/
 - Big-O Notation http://bigocheatsheet.com/
 - Example Solution Wiki for the Book third edition of Steven Skiena's The Algorithm Design Manual. https://www.algorist.com/algowiki/index.php/Solution_Wiki,_The_Algorithm_Design_Manual,_3rd_Edition
 
Books
Algorithms
- Introduction to Algorithms, Fourth Edition, 2021. By Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein (known as CLRS Algorithm Book) https://www.amazon.com/Introduction-Algorithms-fourth-Thomas-Cormen/dp/026204630X
 - The Algorithm Design Manual: Skiena, Steven S S. https://www.amazon.com/Algorithm-Design-Manual-Computer-Science/dp/3030542556
 
Python Programing
- The Practice of Computing Using Python, by W. Punch and R. Enbody, 3-rd edition, Pearson Publishing, ISBN 978-0-13-437976-0 https://www.amazon.com/Practice-Computing-Using-Python-3rd/dp/0134379764