Elements-of-Software-Design icon indicating copy to clipboard operation
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

Online Python Run and Memory Visualization

  • https://pythontutor.com/
  • https://trinket.io/

Python Tutorials

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