Skip to main content

CSC 151.01, Class 56: Wrap Up

Overview

  • Preliminaries
    • Notes and news
    • Upcoming work
    • Extra credit
    • Questions
  • Notes on learning outcomes
  • Course evaluation
  • Final PSA
  • Discussion of the final

News / Etc.

  • Sit in any open seat you’d like.
  • Next Wednesday, 7:00 p.m. and 8:00 p.m. review session for Final
  • I hope to have all grades to you by Monday evening.
  • Yesterday’s eboard has notes on problems 3 and 4.
  • Apologies, continued
    • Or yet more evidence that Sam is an idiot.

Upcoming Work

  • Exam 4 epilogues were due Wednesday. Late ones are accepted tonight until 10:30 p.m. You are better off with a late epilogue [-2 points] than no epilogue [-5 points; no TMTL].
  • Optional Final Thursday at 9am, Friday at 9am, or Friday at 2pm.
    • Let me know by Wednesday if/when you plan to take the exam.

Extra credit (Academic/Artistic)

  • CSC 322 presentations, Today, 1:30-3:00 p.m., Science 3819.

Extra credit (Peer)

  • Baseball, TODAY, 9:00 a.m.
  • Baseball, TODAY, some other time (probably 4:00 p.m., maybe 1:00 p.m.)
  • Messages for You / One Night Only. Tuesday 9:00 p.m. sharp, West and 6th.
  • A Capella Showdown Monday 4-5 p.m. Rotund Bucksbaum

Extra credit (Misc)

  • State of the College budget presentation, Wednesday, noonish, JRC 101.
    • Students I’ve dragged to these presentations tell me that they found it a really good use of their time, and that hey learned a lot more about the College.
  • CSC 105 class art show

Other good things to do

  • Deep breaths! You’re almost done.

Questions

Things you learned

Problem Solving

Previous

  • Thinking carefully about the problem spec: What are the inputs and outputs. What do we require, what can we guarantee?
  • Try multiple approaches to each problem; don’t fixate on one approach.
  • Um - Use mind
  • Think about how you would do something, then think about how you would formalize it for others who might not think the same as you.
  • Consider efficiency. You may have multiple correct solutions, but you also want to be able to complete them in a reasonable amount of time (unless completing them turns out to be a lot of fun and you are paid hourly)

Additional

  • Think out the overall strategy before delving into details.
  • Break larger problems into smaller problems.
  • Draw pictures!
  • There’s not just one way to solve a problem. Try others.
  • Interactive experimentation helps you think through problems.
  • Strategies for getting unstuck.
  • Correctness: How do you determine if something is correct?

Computer Science: Algorithms and Data Structures

Previous

  • Core data structures: Lists, trees, vectors
  • Consider efficiency.
  • Think about how the way you’ve organized or stored the data affects the algorithms you can write.
    • E.g., binary search is only possible in a sorted vector
    • Lists encourage you to go through element at a time.
  • Recursion: A way to go through lots of elements.
    • A general way to repeat actions
  • Think about types (e.g., for your parameters)

Additional

  • Building blocks: Sequencing, naming things, basic operations, making choices, subroutines, repetition, and more.
  • Divide and conquer as a strategy
  • Key algorithms, including binary search and linear search
  • Correctness: How do you determine if something is correct?

Scheme

Previous

  • Assocate a name with a value using define
  • RackUnit
  • Syntax: Embrace the parentheses!
  • A completely new way to think, even if you’ve programmed before.
  • Reading files
  • How to build lists, vectors
  • Approximately 823.5 different procedures
  • Approximately 18 types

Additional

  • Functional thinking
  • Higher-order programming
  • ((P) (a) (r) (en) (th esis))
  • Layout and formatting help you read.
  • Interactive experimentation helps you think through problems.
  • Reading code others write.
  • Writing your own algorithms.
  • Input and output
  • Another language in which to communicate.

Image Making

Previous

None; Sam forgot this one.

Additional

  • Multiple techniques: image-compute, color grids, copy-and-paste, image-variant, turtles, drawings as values, GIMP tools.
  • “There’s more than one way to grin a cat.”
  • GIMP and GIMP tools.
  • A bit of color and design theory.
  • I can write programs that make cool images.

Program and Software Design

Previous

  • Importance of testing and some strategies for testing.
  • Consider efficiency
  • Think about edge cases: What are weird inputs going to do to your code.
  • Build complex images using simple techniques. (Empowerment.)
  • Clear documentation helps yourself and your fellow programmers.

Additional

  • Just a little code can make really complex things.
  • Elegance and efficiency. (Be neat)
  • Documentation! Using the 6P’s.
  • Husk and Kernel
  • Issuing errors
  • Linux.
  • Small details matter (e.g., two identical calls may cause huge expesnse)

General Thinking Skills

Previous

  • Working with others
  • Expanding how you explain things.
  • Know when to take a break.
  • It’s okay to ask for help.
  • You can (must?) combine different skills to handle larger projects
  • Know what you are able to do and work with that.
  • “Thinking on your feet” How to deal with strange unexpected questions promptly. Sam says: “The ultimate outcome of a strong liberal arts eductation is the ability to bullshit clearly and compellingly about any topic you are asked about.”

Additional

  • Do the readings
    • And the supplemental problems
  • A very different perspective
  • Troubleshooting when somthing goes wrong.
  • It’s good to take breaks; sometimes you do better after time away from a problem.
  • Software crashes. Be prepared to deal with crashes.
  • Cite the work of others.
  • Time management.
  • Pair programming

And Beyond

Previous

  • “There’s more to life” than any academic discipline.
  • Know the planning fallacy: Things always take longer than you predict, even if you know that things take longer than you predict.
  • Correct spelling is optional, but only for those in power.
  • Professors have lives too.
  • You’re stuck with the professor you have. Deal with it. (Different professors do things differently.)
  • It’s okay to ask for help!
  • Good humor is helpful. (Bad humor is painful.) (Sorry that you got more of the latter than the former.)
    • “When things go wrong, laugh.”
  • You have awesome classmates who do great things. You should support them.
  • The College (and the broader world) provide a wide variety of fun and challenging artistic and intellectual opportunities; take advantage of them.
  • Care about the people around you. And demonstrate it by making fun of them.

Additional

  • “Everything in Moderation”
  • Computers are sentient and malicious.
  • Do not let academics trump self care.
  • Don’t hit your head against the wall for too long.
  • Treat others with respect.
  • Balance.
  • Subjects that seem reserved for geniuses can actually be accessible if you’re willing to work hard. There’s no need to be intimidated.
  • One can be incredibly successful in life even if one cannot spll or tipe.
  • Feed people.
  • Toys, too.
  • Sleep is super important.
  • Learn people’s names.
  • Professors care.

Course evaluation

Final PSA

  • You are awesome. Be awesome.

Discussion of the Final

How do we win?
Don’t lose. It’s not a competition.
Solve all four problems.
How do we prepare ourselves to solve all four problems?
Review materials, make sure that you understood lab exercises and self-checks.
Write a review sheet. That encourages you to think about what’s important.
Attempt the sample final.
Write your own sample questions.
Go to mentor sessions.
What will the final look like?
Tentatively: One whatzitdo, One algorithm analysis, Two write code.
Trees, Vectors, Recursion over trees and vectors and lists.
Higher-order procedures (maybe read, maybe write)
Files, recursion over files. (Reading!)
What’s the difference between algorithm analysis and whatzitdo?
Whatzitdo: Read the code, figure out what it does, explain.
  • Think about types!
  • Break down into subproblems.
  • Run it by hand.
Algorithm analysis: Read the code, we’ve told you what it does, figure out how much it recurses (or how many times some other procedure is called during all of that recursion).
Will you release answers for the sample final?
I answered two of them in yesterday’s review session.
So at least two.
Problem 2 looks incredibly similar to the “select-numbers” from a previous exam.
Problem 1: Yes, I’ll write a solution, but not at this instant.
The marvelous mentors will also go over all of these interactively during the mentor sessions.
What will the algorithm analysis questions look like?
A whole lot like problem 3 on the sample exam.
We assume that you know that (append lst1 lst2) does a recursive call for each element of lst1. You may find it helpful to figure that out yourself.
As you’ll from yesterday’s eboard, it helps to write things out.
Will you be available for office hours next week?
Probably. I’m not sure when yet. I’ll generally be in my office grading, but I have a lot of meetings. Walk by, call (x4410), or text (641-990-2948), and see if I’m there.
Can we send emails?
Yes.
Will you respond?
Yes.
When are mentor sessions next week?
Wednesday, 7pm and 8pm.
If you tell Halle NOW, you might even get snacks.
Are the sample final questions easier or harder than the final questions?
Difficulty is in the eye of the beholder.
“If you understand the class, all of them will be trivial.”
Probabaly not as hard as problem 4 on the sample exam.