CS 100-001: Principles of Computing
George Mason University Department of Computer Science
Fall 2019 - 12:00-1:15pm Mon/Wed - 1103 Engineering Building
Instructor: Ivan Avramovic
Email: iavramo2-at-gmu.edu
Hours: 1:30-2:30pm Mon/10:30-11:30am Tue, 4609 Engineering Building

Assistants:
Pushkal Reddy (preddy6-at-gmu.edu); GTA/grader
William Duggleby (wduggleb-at-gmu.edu); UTA

Prerequisites: none
Required textbooks:
W. Daniel Hillis, The Pattern on the Stone: The Simple Ideas that Make Computers Work ;
Wentworth, Elkner, Allen, and Meyers, How to Think Like a Computer Scientist: Learning with Python 3 ; (available free online at http://openbookproject.net/thinkcs/python/english3e/)

Webpage: https://cs.gmu.edu/~iavramo2/classes/cs100f19.html
Piazza: https://piazza.com/ for questions and discussion
Blackboard: https://blackboard.gmu.edu/ for assignments and grades
Schedule: see below
Computing requirements: students will need a computer on which they can access Internet sites and install programs, especially Python. There are computer labs on campus which provide this capability, but students may find it preferable to use their own computers.

Description

This course is intended to help students learn to think in the manner necessary to fully grasp the nature and power of the digital world around us. The early era of the Internet and the personal computer led to the need for "computer literacy." Now the changing nature of our global society requires that students learn new ways to think about problems and how to solve them, regardless of students' specific fields of endeavor. Through this course, students will explore major issues related to the "big ideas" of computational thinking (namely, Creativity, Abstraction, Data, Algorithms, Programming, Internet, and Societal Impact), as well as how these issues will impact their future lives.

Outcomes

  1. Students will be able to use technology to locate, access, evaluate, and use information, and appropriately cite resources from digital/electronic media.
  2. Students will understand the core IT concepts in a range of current and emerging technologies and learn to apply appropriate technologies to a range of tasks.
  3. Students will understand many of the key ethical, legal, and social issues related to information technology and how to interpret and comply with ethical principles, laws, regulations, and institutional policies.
  4. Students will understand the essential issues related to information security, how to take precautions and use techniques and tools to defend against computer crimes.
  5. Students will recognize the significance of the "big ideas" of computational thinking.
Topics

Grades

MaterialWeightAmountNotes
Homework assignments40%7
In-class assignments10%5-7not announced in advance
Mini exams30%430 minutes in-class
Final exam20%1comprehensive

Grading Scale

Grade A+AA- B+BB- C+CC- DF
max 9791 898781 797771 6959
min 989290 888280 787270 60

Grading Policies

Honor Code

Any direct contribution from others on an assignment or exam, except where expressly permitted, will be treated as a violation of George Mason's Honor Code. If someone is caught cheating, they will be referred in an honor code case, which will most likely result in failing the course. Cheating by copying is often remarkably easy to detect by electronic means, so please do not put yourself at risk by cheating.

To provide an example of what cannot be done, the following are considered cheating and are not permitted:

By constrast, the following is considered fair game during this course: When learning to program, the ability to discuss with others is important to gain a footing and to better understand what is going on. At the same time, solving problems individually helps us better prepare for situation in which there are no other resources to rely on (like exams). If you are unsure whether something is fair game or cheating, ask an instructor. A good rule of thumb is that when you submit something, especially a piece of computer code, you should understand it well enough to be able to explain how it works.

Suggestions and additional policies

Schedule

Week Date Topic Reading Due
week 1 Aug 26 Overview Pattern chapter 0
Aug 28 Primitive operations; Algorithms Pattern chapter 1
week 2 Sep 2 (no class: Labor Day)
Sep 4 Bits and bytes; Boolean logic Pattern chapter 2
week 3 Sep 9 Bit interpretation HW 1
Sep 11 Python; Turtle graphics Pattern chapter 3; Think chapters 1-3
week 4 Sep 16 Review; Mini-exam 1 HW 2
Sep 18 Abstraction using functions Think chapters 4-5
week 5 Sep 23 Programming loops and conditionals Think chapters 6-7
Sep 25 Computability Pattern chapter 4
week 6 Sep 30 Python lists Think chapter 11 HW 3
Oct 2 Pyton lists, cont.
week 7 Oct 7 Review; Mini-exam 2
Oct 9 Algorithmic complexity Pattern chapter 5
week 8 Oct 15 Search algorithms; (Monday classes meet Tuesday) HW 4
Oct 16 Parallel computing Pattern chapter 6
week 9 Oct 21 Encryption Pattern chapter 7
Oct 23 Review; Mini-exam 3
week 10 Oct 28 Operating systems HW 5
Oct 30 The Internet; HTML
week 11 Nov 4 Putting stuff on the Web
Nov 6 Simulation; Randomness Pattern chapter 8; ML Tutorial
week 12 Nov 11 Artificial Intelligence; Machine Learning Plan for SPAM, Frontline videos HW 6
Nov 13 Privacy with machine learning
week 13 Nov 18 Automation Pattern chapter 9 HW 7
Nov 20 Intellectual property
week 14 Nov 25 Review; Mini-exam 4
Nov 27 (no class: Thanksgiving)
week 15 Dec 2 Putting it all together
Dec 4 Review
-- Dec 16 Final Exam, 10:30am–1:15pm