CSE373: Data Structures & Algorithms - Exam Preparation and Course Wrap-up, Lecture notes of Design

Important information for students in the CSE373: Data Structures & Algorithms course, including exam logistics, a review of main course themes, and instructions for completing course evaluations. It also includes information on post-midterm topics such as sorting algorithms, minimum spanning trees, maps and reductions, parallelism and concurrency, and problem solving.

Typology: Lecture notes

2021/2022

Uploaded on 09/27/2022

dukenukem
dukenukem 🇬🇧

3.9

(8)

240 documents

1 / 22

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
CSE373: Data Structures & Algorithms
Lecture 23: Course Victory Lap
Kevin Quinn
Fall 2015
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16

Partial preview of the text

Download CSE373: Data Structures & Algorithms - Exam Preparation and Course Wrap-up and more Lecture notes Design in PDF only on Docsity!

CSE373: Data Structures & Algorithms

Lecture 23: Course Victory Lap

Kevin Quinn

Fall 2015

Today

  • Rest-of-course logistics: exam, etc.
  • Review of main course themes
  • Course evaluations
    • Thoughtful and constructive feedback deeply appreciated
    • (Including what you liked) 2
  • Sorting
  • Minimum Spanning Trees
  • Parallelism And Concurrency
  • Problem Solving
  • Perserving Abstractions

Post Midterm Topics

  • Properties and runtimes of varying sorting algorithms
    • How much extra space required? In place?
    • Partially sorted? Reverse order?
    • Homework 6 is great to help prepare
  • Given a following block mystery psuedocode, determine which sorting algorithm it is
  • Non-comparison based sorts (bucket sort and radix sort)

Sorting

  • What is the difference?
  • Maps and Reductions
    • Map : Applying a function to all of the values in a collection, resulting in a identical length collection. - Map([1,2,3,4,5,6], +1) = [2,3,4,5,6,7]
    • Reduction : Applying a function to a collection to reduce it to a single value. - Reduce([1,2,3,4,5,6], leftmost even number) = 2
  • Work : How long it takes 1 processor to execute a sequentially execute a block of code
  • Span : how long it takes infinite processors to execute a block of code

Parallelism and Concurrency

7

  • Copy in vs. Copy out
    • To protect internal structures from being modified by clients
  • Private and Final fields
    • How do they impact immutability?
  • Hiding unnecessary information from Clients
    • For example : A client generally does not need to know that your Disjoint sets are being represented as Uptrees
    • Another example : Java’s HashTable does not tell you what hashcode they are using. Why?

Preserving Abstraction

Victory Lap

A victory lap is an extra trip around the track

  • By the exhausted victors (that’s us) J Review course goals
  • Slides from Lecture 1
  • What makes CSE373 special

Thank you!

Big thank-you to your TAs: Rocne Hunter Hunter 2. Bessie Rahul Johnson Eden Megan Mauricio Andy!

Now three slides, completely unedited, from Lecture 1

  • Hopefully they make more sense now
  • Hopefully we succeeded

Data Structures

  • Introduction to Algorithm Analysis
  • Lists, Stacks, Queues
  • Trees, Hashing, Dictionaries
  • Heaps, Priority Queues
  • Sorting
  • Disjoint Sets
  • Graph Algorithms
  • May have time for other brief exposure to topics, maybe parallelism

Goals

  • Be able to make good design choices as a developer, project manager, etc. - Reason in terms of the general abstractions that come up in all non-trivial software (and many non-software) systems
  • Be able to justify and communicate your design decisions Kevin’s take:
    • Key abstractions used almost every day in just about anything related to computing and software
    • It is a vocabulary you are likely to internalize permanently

Hopefully cse373 will not be your last exposure to computer science. There are lots of other awesome computer science courses for non-cse majors!

  • CSE 154: Web Programming
    • Developing Websites and client and server side software
  • CSE 374: Intermediate programming Concepts and Tools
    • Concepts of lower-level programming (C/C++) and explicit memory management
  • CSE 417: Algorithms and Computational Complexity
    • NP Complete problems, undecidable problems, graph theory and complexity
  • CSE 415: Introduction to Artificial Intelligence
    • Knowledge representation, logical and probabilistic reasoning, learning, language understanding, intro to game theory

Where next?

  • Haskell : http://learnyouahaskell.com/chapters
  • C++ : http://www.learncpp.com/
  • Scala : http://www.scala-lang.org/documentation/
  • Ruby : https://www.codecademy.com/learn/ruby
  • PHP : https://www.codecademy.com/learn/php
  • Racket : https://learnxinyminutes.com/docs/racket/
  • There are resources of 100’s of languages online. Pick one and mess with it!

Learn a new Language!

  • Using Unity : https://www.udemy.com/unitycourse/
  • Using ActionScript : https://www.siteground.com/tutorials/actionscript/
  • Make an Android App (using mostly Java): http://developer.android.com/training/basics/firstapp/index.html

Learn to code games!