CS18 TAs Spring 2021

@cs18-spring-2021

Public team

Joined on Jan 15, 2021

  • Here is some information on what to expect from the final. The final, just like the midterm, will be conceptual. While you may be asked to fill in a line of code or look at code, it is not a programming exam. The questions will not be designed to trick you, nor will they introduce new content. Previous exams are in the Final Prep folder in Canvas, under the Files section. Finals prior to 2020 were given paper-and-pencil on campus. The ones from Spring 2020 through last year were given online. Yours will be in the paper-and-pencil format. Logistics When and Where?: The exam will be given from 9am-noon EDT on Friday, May 20th. Within that timeframe, you may take have two options: Take the exam in-person on campus.
     Like  Bookmark
  • One of the most useful tools you should get familiar with through your study of computer science is the terminal. Familiarizing youself with how to maneuver through the terminal and use some basic tools, like git and text editing, will be very helpful throughout CS18 and beyond. 1. Accessing the terminal To open the terminal using macOS: Go to Applications -> Utilities -> Open Terminal If you are using a a Windows machine: Search for Command Prompt 2. Basic Terminal Commands
     Like  Bookmark
  • In CS0180, there will be two group projects and one individual mini-project. Please read this handout for more information about project logistics, because projects are a larger undertaking than the usual homework assignment. More project-specific material, such as project-specifc deadlines, content, and grading criteria will be found in each project's respective handout, released 2 weeks before their due date. High-Level Overview of Project Logistics The rest of this document will expand on each of these points. You will be part of a project group (2-4 students) that collaborates on a high-level design of the project. (This part generally does not involve writing code.) One member of the group submits it (via Gradescope; this is Deadline 1) Your project group will meet with a TA to review your design (this is the Design Check) After the design check, your project group must split into subgroups to write the code. The subgroup must have either 1 or 2 people.
     Like  Bookmark
  • We will be using Gradescope to manage and grade your assignments. All homeworks and projects will be submitted through Gradescope. Logistics The gradescope code for the course is RWR4Z5. In order to preserve your anonymity during grading, we ask that you change your "Full Name" to your Banner ID. On the bottom left of the Gradescope screen, go to Account->Edit Account, and change your "Full Name" field to your Banner ID: If you can't do this due to other classes requiring your name, we can change your name for this class specifically, so don't worry! Homework Handins
     Like  Bookmark
  • What is Github? For that matter, what is Git? Git is a version control system that lets you keep track of your software projects in repositories, which hold all the files, folders, and revision history of their associated projects. It also allows you to collaborate asynchronously with many other people. Github is one particular service that we’ll be using to host our code repositories. Think of it like Google Drive, but specifically for code. Getting started Git provides many useful features, but we’ll stick to the basics that you need for CS200. Of course, you'll need a Github account, if you don't already have one. Just sign up with the email of your choice at Github.com.
     Like  Bookmark
  • Due Date: Friday, July 16, Anywhere-On-Earth time The Hunt Continues... (optional) :::spoiler Look here for the next clue! Somewhere, out there, in the great big world, there is a bear. Blueno. The greatest treasure of all time, a joy unspeakable. And the remarkable CS18 Team of Theme is searching for it. The grandiose, all-powerful Team of Theme has found a super-snazzy kind of top-secret database with information about the beloved bear and its prized treasure. Only, this set of data also happens to have some info about other things as well, like cats. If they ever want to find happiness again, they'll have to parse this database bit by bit, developing a good ole' search engine to warm the soul. To find Blueno. In MedWiki.xml, there lie some clues Searchable, they are, but first you must choose
     Like  Bookmark
  • Due Date: Friday, August 6, Anywhere-On-Earth time The Hunt Continues... (optional) :::spoiler Look here for the next clue! At long last, the CS18 Team of Theme is ready to reveal the final clue to Blueno’s treasure. Many sweat, tears, and hardwork have gone to this moment (very many). Blueno’s treasure has been sitting, gathering dust and bugs for so long that we need to check if all of the clues still work. You’ve come far, dear student, on you I depend But there’s yet a clue to be found, my friend I’ll give it to you And the qr compiler, too
     Like  Bookmark
  •  Like  Bookmark
  • Due Date: Friday, July 23rd, anywhere on Earth time (Saturday, July 24th, 8 a.m. EDT) The Hunt Continues... (optional) :::spoiler Optional theme material The all-powerful CS18 Team of Theme needs to make a video. Why? Well.. you'll find out soon enough. But the scenery around campus is too boring! It's all the same buildings and greenery, drudgery unspeakable. Before, there was a blue anchor, a light at the end of the storm. But now the blue anchor has vanished. Blueno is gone. The glorious Team of Theme plans to bike from Providence to Boston, but its members also have a healthy appetite. To plan their trip effectively and satisfy their hunger, they need to develop an algorithm! Deliciously good snacks, the Theme Team must eat, On their trip to ol' Beantown, what a delightful retreat!
     Like  Bookmark
  • Due April 16th at Anywhere-on-Earth time. The Hunt Continues... (optional) :::spoiler Look here for the next clue! At long last, the CS18 Team of Theme is ready to reveal the final clue to Blueno’s treasure. Many sweat, tears, and hardwork have gone to this moment (very many). Blueno’s treasure has been sitting, gathering dust and bugs for so long that we need to check if all of the clues still work. You’ve come far, dear student, on you I depend But there’s yet a clue to be found, my friend I’ll give it to you
     Like  Bookmark
  • Change of plans! We'll start with a new problem for today, so if you looked at this page before Wednesday 10am, apologies. No prep is required for today.
     Like  Bookmark
  • Due: May 28, 2021 (Anywhere on Earth) Learning Objectives Explain tradeoffs between mutable and immutable data structures in the context of a specific problem Write programs that can compile and run against a provided interface Assignment Link Using this github classroom link, accept the assignment and clone on your machine. If you're having trouble with IntelliJ, check out our IntelliJ Common Problems handout.
     Like  Bookmark
  • (was spring 2021 Lecture 24) Last class, we talked about two approaches to implementing heaps: implementing doubly-linked trees with classes for nodes and leaves, implementing doubly-linked trees with arrays. This class, we're going to discuss these further, then talk about how heaps are useful in sorting. We'll then return to managing Alert priorities: we'll learn about Priority Queues, a built-in data structure in Scala (and many other languages) that uses heaps to manage priorities.
     Like  Bookmark
  • Was Lecture 22 in Spring 21 Design Problem: Managing Security Alerts Real-world systems that manage sensitive information often keep logs of user's actions and check whether patterns of those actions suggest inappropriate activity. For example, many failed login attempts for a particular username can suggest an attack. Someone saving a lot of large files all of a sudden could mean that someone is copying data that they shouldn't otherwise be able to manipulate. These are two of many examples. These systems have several key components: A database (or data structure) of the actions that users have taken in the system. We'll call this the Event Log. A mechanism for processing the log and generating alerts about patterns of activity. A data structure for managing alerts, so the security staff can prioritize the most serious alerts first.
     Like  Bookmark
  • Due Date: Wednesday July 7th, anwhere-on-earth time (Thursday, July 8th, 8 a.m. EDT) This homework will be graded, however, it will be weighed less than your other homeworks. Mid-Semester Feedback The semester is halfway over --- if you wish, we would love to hear any mid-semester feedback you might have for us this summer. It has been a joy to have you all in CS18 and we thank you for all of your hard work so far! We want to make the second half of the semester even better than the first, so we would appreciate any feedback if you have it. This form is completely anonymous and optional. Fill out the mid-semester feedback form here!! Functional Programming Assignment Requirement
     Like  Bookmark
  • Due Date: Monday March 15th, anwhere-on-earth time (Tuesday, March 16th, 8AM EDT) This homework is optional. It will not be graded. We are keeping the gradescope submission open so that you can see the autograder feedback on your code. Learning Objectives By the end of this homework, you will be able to: Develop classes that protect how their data is used through access modifiers and appropriate choice of provided methods Develop a collection of examples and tests that exercise key behavioral requirements aspects of a problem Write programs that behave as expected based on a provided description or collection of test cases
     Like  Bookmark
  • In this lecture, we'll look at how Scala handles class hierarchies and interfaces. We will spend a few minutes at the start of class in breakouts, discussing how you would design a class hierarchy for the problem given below the line. Prep Look at and/or download the starter file. It shows a class definition in Scala (that is more complicated than the Triple example from Friday). Read over the problem that we'll work on. Our motivating problem for the day
     Like  Bookmark
  • Introduction IntelliJ is an IDE (Integrated Development Environment) for Java and Scala, the two languages we will be using in CS18. Similar to DrRacket in CS17, code.pyret.org in CS19, or PyCharm in CS111, IntelliJ is an incredibly useful tool that does syntax highlighting, error-checking, and much more. It is very highly recommended that you install IntelliJ and use it throughout CS18, as this will be the IDE that the TAs have practice with. In this document, you will find a step-by-step guide for installing and setting up IntelliJ on your local machine, and setting up IntelliJ on a department machine. Note that you only need do this a single time on your local machine, and a single time on a department machine. You may use a different Java/Scala IDE if you wish, but note that our staff will only support/help with IntelliJ. Common Bugs/FAQ We will try to update this with bugs that we encounter during the semester! :::warning Skip this section if you are reading this guide for the first time and just want to set up IntelliJ.
     Like  Bookmark
  • Introduction This document is a Java style guide. Reading someone else’s code (or even your own code at some later date) formatted in a standard style that you are familiar with makes understanding how that code operates much easier. For this reason (and others), the use of style guides is now standard practice in commercial and open source software development. This guide is inspired by the Java code conventions published by Google. Experience following guidelines like the ones described here will serve you well beyond CS18. Please read this guide carefully. As in CS17, your assignments will be graded on style as well as functionality, so this guide should be a valuable tool for you while coding. :::spoiler Is this just a CS18 thing? In industry, mandating a style standard also allows multiple people to work on the same code base more easily. Without a standard, people can waste hours formatting and reformatting code to adhere to their own personal style. ::: What's been added in Level Two? loops
     Like  Bookmark
  • Welcome to Scala, a programming language that aims to combine the best of Java with the best of functional programming. It was developed by a programming languages researcher with a lot of experience in both functional and object-oriented programming who was frustrated that he couldn't use his favorite features of both at the same time. The next couple of lectures will introduce you to Scala through a couple of programs that exercise its functional and object-oriented features. This first Scala lecture will emphasize at the functional features. Prep If you just want to take notes on paper, there is nothing to prepare. If you want to follow along in IntelliJ, you need to set up and test your ability to run Scala programs. Here are the steps: Make a new project in IntelliJ for your Scala work. If you already installed the Scala package back when you installed IntelliJ, you should see an option for Scala (three red bars) towards the bottom of the left panel of the New Project window. Select that, which will bring up a window where you will make some settings (for sbt version and Ivy -- see the IntelliJ setup guide if you need details or did not already set up Scala).
     Like  Bookmark