1 of 15

CSE 374 Programming concepts and tools

Summer 2024 Instructor: Audrey Seo

2 of 15

Today:

  • Reminder to fill out course evaluation
  • Reviewing Wednesday’s lecture
  • Course Recap
  • Q&A

3 of 15

Course evaluation!

https://uw.iasystem.org/survey/294543

Open through this Friday, 8/16 at 11:59pm

If we get to 100% by class today, everyone will get 10 points.

If we get to 100% by end of day this Friday, 8/16, then 5 points.

4 of 15

4

Review: CPU

The CPU parses the instruction string.

  • Takes action based on what is encoded
  • Interacts with other components as needed (e.g. ALU for math)

Fetch -> Decode -> Execute

5 of 15

Review: The Big Picture

5

6 of 15

Recap

6

7 of 15

What You Accomplished

  • Learned how to use a text interface to control a computer over the internet
  • How to write bash scripts to automate various parts of your workflow
  • Learned how to write code in one of the most foundational languages ( C )
    • Computer and memory architecture (e.g. stack vs. heap)
    • Wrote a substantial C program of ~200 lines (that implements a trie)!
  • Used design patterns from C++ to make your programs more robust and efficient
  • Discovered how code gets transformed into binary that controls your computer
  • ...and more!

7

Put simply, you learned how a computer actually works!

8 of 15

"Why did we learn this?"

  • Should I program everything in C now?
    • No, definitely not
    • C gives us a window into how all programs work
    • In a way, it is the simplest programming language
  • How will this help me if
    • … I don't program in C?
    • … I don't use concurrency?
    • … I don't pursue a career in the software industry?

If you can learn how to write in C, you can learn how to write in any language.

8

9 of 15

Takeaways

All of these skills help with

  • Problem solving
  • Critical thinking
  • Creativity
  • Communication (e.g. clear writing)

Thinking in abstractions is like working out a muscle.

  • The more you do it, the better you get at breaking down large problems into smaller components.
  • A valuable skill no matter what you pursue.

10 of 15

Software is still so new

Everything we’ve learned was only invented in the last ~70 years or so.

  • Ada Lovelace first invented programming in the 1880s (but huge gap between)
    • “Ada Lovelace was able to discern the importance of numbers, realizing that they could represent more than just numerical values of things.” (HP)
  • Assembly: 1949.
  • FORTRAN: 1957.
  • C (which was considered high-level at the time): 1972

Although these technologies feel so old, they really aren’t.

  • We exist at an incredible time.
  • Technology is being invented all around us!

11 of 15

What’s next?

We’ve covered so many huge subdomains in this course.

  • Compilers
  • Networks
  • Operating Systems
  • Computer Architecture
  • Command line interfaces
  • The hardware/software interface

You’re now well-equipped to dive deeper into any of these disciplines.

  • Move towards what you’re interested in!
  • Get involved in OSS (via GitHub!) or research (here at UW!)

12 of 15

Career

Programming and software can be used in so many disciplines

  • My sister uses programming to create interfaces for psych studies
  • Scientists use R and python to run statistical analyses
  • SQL is the most widely-used programming language (after excel spreadsheet formulas)
    • Used by every company, from Amazon to Walmart
  • and much more!

Whatever you do, you can probably find a use for the skills in this class

  • Need to search all your documents for a certain keyword? You can use grep!
  • Want to move all documents in your downloads ending with .pdf to a particular folder? You can use mv!

13 of 15

Keeping in Touch

Don’t hesitate to email me: alseo@cs.washington.edu or audreyleeseo@gmail.com, or find me on my website https://audreyseo.github.io

14 of 15

🎉 Thank You! 🎉

15 of 15

Q&A