Skip to content

Latest commit

 

History

History
321 lines (221 loc) · 14.5 KB

readme.md

File metadata and controls

321 lines (221 loc) · 14.5 KB

CS 1000

The Beauty and Joy of Computing

This course introduces the fundamental concepts of computing including abstraction, algorithms, design, and distributed computation. The curriculum is hands-on, focusing on translating ideas into working computer programs and developing a mastery of practical computational literacy. We write our programs in NetsBlox, a block-based language developed by a research team at Vanderbilt University. Along the way, we also discuss the history, ethics, and cultural impact of computing.

While envisioned as an introduction to computing for non-majors, majors and prospective majors are also welcome. Students in the School of Engineering may only receive open elective credit for CS 1000.

A mirror copy of the syllabus is available on Github.

Learning Outcomes

  1. Solve simple problems with short computer programs
  2. Examine ethical and social issues arising from the increasing role of algorithms and computer software in everyday life
  3. Identify the relevance of computational thinking to your particular major and fields of interest

Faculty

  • Clifford Anderson, Associate University Librarian for Research and Digital Initiatives and Adjunct Professor of Computer Science
    • Email: clifford.anderson@vanderbilt.edu
    • Office: 213 Law Library
    • Office Hours: 9 - 11 a.m. on Mondays or by appointment
    • Administrative Assistant: Susan D. Grider (2-2187)

Meetings

  • T/R 9:35 a.m. - 10:50 a.m. in Olin Hall 135

Required Texts

  • Erwig, Martin. Once Upon an Algorithm: How Stories Explain Computing. Cambridge: The MIT Press, 2017.
  • Evans, Claire. Broad Band: The Untold Story of the Women Who Made the Internet. New York: Portfolio/Penguin, 2018.

Other assigned readings will be available via BrightSpace. The syllabus also includes links to short videos for each session.

Grade distribution

  • Class Participation 10%
  • Coding Assignments 15% (5 assignments x 3 points each)
  • Midterm Examination 15%
  • Final Paper 30% (5 to 7 pages)
  • Final Project 30%

Class policies

Acknowledgments

This course takes direct inspiration from the Beauty and Joy of Computing curriculum, but also differs in significant ways, using different readings, videos, coding assignments, and programming environment.

Ability and Disability

This class respects and welcomes students of all backgrounds, identities, and abilities. If there are circumstances that make our learning environment and activities difficult, if you have medical information that you need to share with me, or if you need specific arrangements in case we have to evacuate the building, please let me know. As I aspire to create an effective learning environment for all students, I would appreciate if you would discuss your needs with me as soon as possible. I promise to maintain the confidentiality of these discussions. If appropriate, please also contact the Vanderbilt Equal Opportunity, Affirmative Action, and Disability Services Department (EAD) to get more information about specific accommodations.

Absences

Class participation is an important component of this course and more than two unexcused absences may negatively impact your grade. Please consult me in advance if you need to miss more than two class sessions.

Academic Integrity

The Vanderbilt University Honor Code applies to all activities in this course. As for this course, the basic rule is this -- all work submitted in this class must be done completely on your own without assistance from any person, place or thing except the instructors or TAs for this course, the course textbook, and course lecture slides. If you have any doubts, ask your instructor for clarification, not another student (not even the teaching assistants).

Student Privacy

The Family Educational Rights and Privacy Act (FERPA) (20 U.S.C. § 1232g; 34 CFR Part 99) also governs all activities this class. You will be asked to complete and submit online assignments to me and will also be sharing projects with other students in this class. If you have any concerns about digital privacy, please consult me at your earliest convenience.

Technology

We will be using a free and open-source visual programing language called NetsBlox during the course. The sole prerequisite for using NetsBlox is a modern web browser with JavaScript enabled. You will need to bring a computing device to class to follow along with classroom exercises––any brand of laptop or a tablet should be fine. If you do not have a personal laptop or tablet at your disposal, please consult me and we will find alternative arrangements.

Disclaimer

This syllabus provides a general outline for the course. The readings and coding assignments are subject to change. If I have to make substitutions, I will update the syllabus and communicate those changes during class.

Class Schedule

Week One: Introduction

August 22 - What is Computational Thinking?

Week Two: Programming Basics

August 27 - What are Algorithms?

August 29 - Predicates and Branching

  • Read: Martin Erwig, "Walk the Walk: When Computation Really Happens," Chapter 2 of Once Upon an Algorithm: How Stories Explain Computing (Cambridge: MIT Press, 2017)
  • Watch: Basic Logic Gates: Explained! (in Minecraft)
  • Code:
    • Boolean Operators
    • Hello, NetsBlox!
    • FizzBuzz

Week Three: Abstraction I

September 3 - Control Structures and Variables

  • Read: "Weather, Rinse, Repeat," Chapter 10 of Once Upon an Algorithm: How Stories Explain Computing (Cambridge: MIT Press, 2017)
  • Watch: What's an Algorithm?
  • Code:
    • Iterators
    • Reporter Blocks
    • Palindrome Checker

September 5 - Privacy and Information Hiding

Coding assignment 1 due at the beginning of class

Guest lecturer: Melissa Mallon, Director of Peabody Library/Director of Liaison & Instruction Services

Week Four: Data Structures I

September 10 - Representations

September 12 - Lists

Coding assignment 2 due at the beginning of class

  • Read: Martin Erwig, "The Detective's Notebook," Chapter 4 of Once Upon an Algorithm: How Stories Explain Computing (Cambridge: MIT Press, 2017)
  • Watch: Lists
  • Code:
    • Distinct Values in a List
    • Artworks from the Metropolitan Museum

Week Five: Data Structures II

September 17 - Data Types

  • Read: Martin Erwig, "The Magical Type," Chapter 14 of Once Upon an Algorithm: How Stories Explain Computing (Cambridge: MIT Press, 2017)
  • Watch: Data Types
  • Code:
    • Geospatial Coordinates
    • Structured Data Library

September 19 - Copyrights

Coding assignment 3 due at the beginning of class

Week Six: Games and Secrets

September 24 - Events and Game Loops

  • Read: Claire L. Evans, "The Longest Cave," Chapter 6 of Broad Band: The Untold Story of the Women Who Made the Internet (New York: Portfolio/Penguin, 2018)
  • Watch: Event-Driven Programming
  • Code:
    • Platform Game
    • Artwork Puzzle

September 26 - Digital Secrets

Coding assignment 4 due at the beginning of class

Week Seven: Abstraction II

October 1 - Higher-Order Functions

  • Read: Claire L. Evans, "The Tower of Babel," Chapter 4 of Broad Band: The Untold Story of the Women Who Made the Internet (New York: Portfolio/Penguin, 2018)
  • Watch: Who is Grace Hopper?
  • Code:
    • Caesar Cipher, Revisted

October 3 - Artificial Intelligence

Coding assignment 5 due at the beginning of class

Week Eight: Algorithms I

October 8 - Searching

  • Read: Martin Erwig, "The Search for the Perfect Data Structure," Chapter 5 of Once Upon an Algorithm: How Stories Explain Computing (Cambridge: MIT Press, 2017)
  • Watch: How Search Engines Treat Data
  • Code:
    • B-Trees
    • Linear Search
    • Binary Search

October 10 - Sorting

  • Read: Martin Erwig, "Sorting Out Sorting," Chapter 6 of Once Upon an Algorithm: How Stories Explain Computing" (Cambridge: MIT Press, 2017)
  • Watch: 15 Sorting Algorithms in 6 Minutes
  • Code:
    • Bogosort
    • Selection Sort
    • Insertion Sort
    • Bubble Sort
    • Quicksort
    • Merge Sort

Week Nine: Review and Midterm

October 15 - Review

October 17 - Midterm Exam

Week Ten: Distributed Computing I

October 22 - Message Passing

  • Read: Claire L. Evans, "Resource One," Chapter 7 of Broad Band: The Untold Story of the Women Who Made the Internet (New York: Portfolio/Penguin, 2018)
  • Watch: Project One [N.B. Please watch the first five minutes and 46:00 to 48:30.]
  • Code:
    • "Hello, Worlds" (Peer-to-Peer)
    • Whiteboard

October 24 - No Class - Fall Break

Week Eleven: Distributed Computing II

October 29 - Client-Server Applications

  • Read: Claire L. Evans, "Networks," Chapter 8 of Broad Band: The Untold Story of the Women Who Made the Internet (New York: Portfolio/Penguin, 2018)
  • Watch: Early Days of the WELL
  • Code:
    • Chatroom

October 31 - Internet Censorship and Security

Week Twelve: Algorithms II

November 5 - Recursion

  • Read: Martin Erwig, "A Stich in Time Computers Fine," Chapter 12 of Once Upon an Algorithm: How Stories Explain Computing" (Cambridge: MIT Press, 2017)
  • Watch: What on Earth is Recursion?
  • Code:
    • Trees in a Forest
    • Computing Factorials

November 7 - Efficiency and Limits of Computing

  • Read: "Mission Intractable," Chapter 7 of Once Upon an Algorithm: How Stories Explain Computing (Cambridge: MIT Press, 2017)
  • Watch: P vs NP on TV
  • Code:
    • Prime Number Factorization
    • Knapsack Problem

Week Thirteen: Distributed Computing II

November 12 - Remote Procedure Calls

  • Read: Claire L. Evans, "Communities," Chapter 9 of Broad Band: The Untold Story of the Women Who Made the Internet (New York: Portfolio/Penguin, 2018)
  • Watch: What is an API?
  • Code:
    • Google Maps
    • Google Trends
    • Google Weather

November 14 - Databases

Guest Lecturer: Gordon Stein, Ph.D. Candidate in Computer Science, Vanderbilt University

  • Read: Mana Takahashi and Shoko Azuma, "What is a Database?" Chapter 1 of The Manga Guide to Databases (San Francisco: No Starch Press, 2009), pp. 1-22
  • Watch: What is a Database?
  • Code:
    • CloudVariables RPC

Week Fourteen: Next Steps

November 19 - Digital Humanities

  • Read: Claire L. Evans, "Hypertext," Chapter 10 of Broad Band: The Untold Story of the Women Who Made the Internet (New York: Portfolio/Penguin, 2018)
  • Watch: Big Data + Old History
  • Code:
    • Natural Language Processing with Parallel Dots

November 21 - Computational Thinking Beyond NetsBlox

Final paper due at beginning of class

  • Read: Martin Erwig, "A Bird's Eye View of Abstracting from Details," Chapter 15 of Once Upon an Algorithm: How Stories Explain Computing (Cambridge: MIT Press, 2017)
  • Watch: The Art of Abstraction
  • Code:
    • Javascript in NetsBlox
    • Validating an Email Address

Week Fifteen - No Class - Thanksgiving

Week Sixteen: Project Demonstrations

December 3 - Student Projects, Part One

December 5 - Student Projects, Part Two