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 oflst1. 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.