Try   HackMD

CS0111 - Fall 2021: Final Exam Prep Guide

Our final will be on Thursday, Dec 16 from 9AM - Noon.

  • MacMillan Hall 117 (LAST NAMES BEGINNING WITH A-M)
  • Metcalf Research Building AUD (LAST NAMES BEGINNING WITH N-Z)
  • Students with SAS/SEAS accommodations with receive email with location/instructions

The exam is going to check your conceptual understanding of material from across the course, with emphasis on data organization and updating data. We want to check whether you can frame data-facing questions at a high level, choose between the shapes of data for a problem, and design and test programs that change data. for the impacts of changes to data.

All questions on the final will go to either the Data or the Testing/Analysis themes of the grading system.

What should you expect?

  • The exam will be entirely on paper. You may not use a computer (or phone, etc) during the exam.

  • The exam will be designed to take an average of about 90 minutes (but you have three hours). That should give enough time for everyone to finish.

  • The exam will be self-contained. You will not be asked to remember any specific scenario from lecture, homework, projects, or labs.

  • You will not be expected to write much code on the exam.

    • You may be asked to fill in fragments of code (along the lines of what you've done on the drills).
    • You might need to write a dataclass or Pyret datatype definition
    • You might be asked to write assertions/short test expressions
  • If a question involves code, it will be presented in whichever of Python or Pyret we used when we learned the corresponding concept in the course.

  • You will not be tested or graded on details of syntax. For example, if we ask you to write a Python for-loop and you forget the colon at the end of the first line, that's fine. For the exam, we care about your understanding of the concepts. As long as your code is close enough to convey that you know how to approach the problem, that's fine.

    Using reasonable indentation (such as indenting the code to execute when a conditional statement is true) will be important though, as that conveys which code gets executed when.

  • The questions will be open-ended rather than multiple choice. You might be asked to draw something, fill in blanks, circle relevant pieces of code, and so on.

What can/should you bring?

  • Your Brown ID (we will check them as you turn in your exam)
  • Something to write with
  • One sheet of paper (8.5 x 11) with notes of your choosing. You may have notes on both sides. You may not share notes with others during the exam, but you are welcome to work with others to prepare your study sheets. The sample exams (see below) might help you figure out what notes you want to bring.

Your notes sheet must be on paper, not on your phone or computer, etc.

We will provide scrap paper.

No headphones during the exam.

What you are expected to know

Programming

  • Which programming constructs are appropriate for different situations: when should you use each of conditionals, (helper) functions, recursion, for-loops, and variable updates?

  • How programs evaluate to answers, both in terms of the answers, and at the level of the program dictionary and memory diagrams.

  • What each of map, filter, and sort would achieve on a list

Data structures

  • When are each of tables, lists, trees, dataclasses, and dictionaries a good choice for capturing information.

  • How to use a combination of tables, lists, trees, dataclasses, and hashtables to manage the dictionaries for a problem.

  • How to define a Pyret datatype or Python dataclass to capture specific information for a problem.

Testing

  • How to test functions that return results

  • How to test functions that update data, but only return None

What you are NOT expected to know

This list may grow as people ask clarifying questions about the exam

  • Fine-grained details of language syntax

  • The specific names of operations on Pyret tables or Pyret operations that produce different kinds of graphs

  • Reading input from or writing output to files

  • How to use pandas

  • The various components needed to write a simulation or game in Pyret

  • The details for using the built-in sort operations in either Pyret or Python

What kinds of problems might you get?

  • Given a program, what will its output be when executed?

  • Given a scenario, what data structures would you use to capture the data? Answers should indicate both the datatype (list, dictionary, tree, etc) and the types of the parts (list elements, hashtable keys, etc).

  • Given a partially-written program with blanks, how do you fill in the blanks to achieve a certain behavior or result?

  • Given a program, what might the program dictionary and memory look like at a specific point in the execution?

  • Given a problem, what would be some good tests for it?

  • Given a program that is producing the wrong answer, identify and correct the error.

  • Given two proposed data organizations/data structures for a specific problem, contrast their strengths and weaknesses.

Note that these are the same kinds of questions you've done across homeworks, labs, and drills.

How To Prepare?

There is a folder in Canvas with the exams from the last two times Kathi taught the course. The 2018 exam was on paper with 3 hours total time. The 2020 exam was online due to COVID, and was designed to take 60 minutes (because we did more quizzes that semester).

We will have some TA/prof hours during late reading period/early exam period where you can ask questions about and review your work on these problems.