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.
- Solve simple problems with short computer programs
- Examine ethical and social issues arising from the increasing role of algorithms and computer software in everyday life
- Identify the relevance of computational thinking to your particular major and fields of interest
- 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)
- T/R 9:35 a.m. - 10:50 a.m. in Olin Hall 135
- 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.
- 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%
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.
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.
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.
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).
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.
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.
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.
- Read: Claire L. Evans, "A Computer Wanted," Chapter 1 of Broad Band: The Untold Story of the Women Who Made the Internet (New York: Portfolio/Penguin, 2018)
- Watch: Computational Thinking: A Digital Age Skill for Everyone
- Code:
- Draw a Square
- Draw a Triangle
- Draw a Circle
- Read: Martin Erwig, "A Path to Computation," Chapter 1 of Once Upon an Algorithm: How Stories Explain Computing (Cambridge: MIT Press, 2017)
- Watch: The Beauty & Joy of Computing | Dan Garcia | TEDxBerkeley
- Code:
- Hansel and Gretel
- Fidget Spinner
- Splatter Painting
- Click Alzonzo
- 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
- 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
Coding assignment 1 due at the beginning of class
Guest lecturer: Melissa Mallon, Director of Peabody Library/Director of Liaison & Instruction Services
- Read: Hannah Fry, "Data," Chapter 2 of Hello World: Being Human in the Age of Algorithms (New York: Norton, 2018), pp. 25-47
- Watch: Amazon's Alexa Raises Concerns Over Tech and Surveillance
- Code:
- 'Say Hello' Function
- 'Draw a Shape' Function
- 'Day of the Week' Function
- Read: Martin Erwig, "The Mystery of Signs," Chapter 3 of Once Upon an Algorithm: How Stories Explain Computing (Cambridge: MIT Press, 2017)
- Watch: Binary Numbers and Base Systems as Fast as Possible
- Code:
- Convert Decimal to Binary (and back)
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
- 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
Coding assignment 3 due at the beginning of class
- Read: Andres Guadamuz, "Artificial Intelligence and Copyright," WIPO Magazine (October 2017): 15-19
- Watch: Copying Is Not Theft
- Code:
- Pixabay Gallery
- City Guessing Game
- 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
Coding assignment 4 due at the beginning of class
- Read: Masaaki Mitani, Shinichi Sato, and Idero Hinoki. "The Foundations of Encryption," Chapter One of The Manga Guide to Cryptography (San Francisco: No Starch Press, 2018), pp. 15-46
- Watch: Cryptography: The Science of Making and Breaking Codes
- Code:
- Caesar Cipher
- 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
Coding assignment 5 due at the beginning of class
- Read: Alan Turing (October 1950), "Computing Machinery and Intelligence", Mind, LIX (236): 433–460
- Watch: Friends Forever: Can an Artist and a Robot Maintain a Friendship?
- Code:
- Compliment Generator
- Sudoku Solver
- 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
- 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
- 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
- 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
- Read: MacKinnon, Rebecca. "Democratic Censorship," Chapter 6 of Consent of the Networked: The Worldwide Struggle For Internet Freedom (Basic Books, 2012), pp. 87-97
- Watch: What Is A Man-in-the-Middle Attack?
- Code:
- Person-in-the-Middle Attack
- 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
- 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
- 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
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
- 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
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