CS 101 Fundamentals of Computing Spring 2021
Contents
Catalog Description
The main focus of the course is to give students a practical understanding of computing to become well-informed citizens and professionals in the computing age. Topics may include a basic study of - computational thinking, computer security, big data, artificial intelligence, and current trends in computing.
Prerequisites
Typing and basic computer use - web browser, email, etc.
Standard Content
Course Outline
We will spend 1-2 weeks on each of the following topics:
- What is inside a computer: CPU, RAM, hard drive, etc.
- Internet 101: how data is moved around the internet
- Computer and internet security: how do you know your data is secure?
- Servers and such: logging into a server, transferring files
- Html basics: creating web pages, a little bit of javascript
- Block programming: scratch.mit.edu, code.org, blocky
- Computational problems: things computers can do really well, and things that are impossible for computers to solve
- Artificial intelligence: different meanings of the term, examples
Learning Outcomes
The following are the most important learning outcomes for each of the 8 topics listed in the course outline.
- What is inside a computer
- Name the different components that make up a computer.
- Describe what the terminology associated with a component means (e.g., Ghz for CPU’s is the speed of the CPU, GB for the size of a hard drive).
- Evaluate the tradeoffs between different components (e.g., one CPU versus another)
- Internet 101
- Explain the basic infrastructure of the internet and associated terminology.
- Explain the infrastructure of a home network, and be able to configure a home network.
- Explain how web browsing and email works, in terms of which parties are involved (e.g., server and client), where data is stored, and what communication is involved.
- Computer and internet security
- Explain the concepts of encryption/decryption, digital signing, and the difference between public-key and private-key encryption.
- For given situations, be able to say whether a given interaction is secure or not.
- Know the key terminology of internet security (e.g., rsa, sha, https, etc.).
- Servers and such
- Explain what servers are used for
- Be able to log in to a server to transfer files to a server, and login via ssh to issue commands to the server
- How is data stored on a server, and how do we access data
- Html basics
- Explain the basic structure of an html document, and understand that an html document is a plain text file that has markup tags to say how to display different parts of the webpage.
- Be able to create simple html webpages.
- Be able to put webpages onto a web server.
- Block programming
- Understand the concept of a computer program as instructions for the computer.
- Be able to design simple programs in a graphical programming environment (one where there is no possibility for syntax errors, e.g., scratch).
- Computational problems
- Explain some examples of computational problems, and understand how problems are framed (input to the problem, correct output, running time of finding the solution).
- Basic skills in evaluating efficiency of an algorithm.
- Explain some examples of computational problems that either cannot be solved, or require inordinate amount of time to solve (e.g., halting problem).
- Artificial intelligence
- Understand the concept of the “Turing test” as a test of artificial intelligence.
- Know the history of some famous examples of “artificial intelligence” (e.g., chess playing, Jeopardy playing, chat-bots).
- Explain some examples of artificial intelligence techniques (e.g., spam filtering, facial recognition, expert medical systems).
Important Assignments and/or Exam Questions
- TODO
Standard resources
- The Beauty and Joy of Computing - course on CS Principles, including programming in SNAP
- Computer Science Principles - a similar course by Amit Jain at Boise State with much of the content online
- Introduction to Computing - a similar course by Nick Parlante at Stanford with much of the content online
- HTML tutorial, CSS tutorial, More on CSS, Javascript tutorial
- Introduction to Computing: Explorations in Language, Logic, and Machines by David Evans
- A Computer Science Tapestry by Owen Astrachan
- Blown To Bits: Your Life, Liberty and Happiness After The Digital Explosion by Hal Abelson, Ken Leeden and Harry Lewis