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
-
Students will be able to use technology to locate, access, evaluate, and
use information, and appropriately cite resources from digital/electronic media.
-
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.
-
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.
-
Students will understand the essential issues related to information security, how to
take precautions and use techniques and tools to defend against computer crimes.
-
Students will recognize the significance of the "big ideas" of computational thinking.
Topics
- Representation of ideas with bits
- Basic boolean logic
- Devices to implement logic functions
- Programming languages for data and action
- Primitive operations and abstraction
- Algorithms for work and play
- Communication between machines
- Computing security concepts
- Basic data analysis
- Impact of automation and communication on human societies
- Human and machine intelligence
Grades
| Material | Weight | Amount | Notes |
| Homework assignments | 40% | 7 | |
| In-class assignments | 10% | 5-7 | not announced in advance |
| Mini exams | 30% | 4 | 30 minutes in-class |
| Final exam | 20% | 1 | comprehensive |
Grading Scale
| Grade |
A+ | A | A- |
B+ | B | B- |
C+ | C | C- |
D | F |
| max |
↑ | 97 | 91 |
89 | 87 | 81 |
79 | 77 | 71 |
69 | 59 |
| min |
98 | 92 | 90 |
88 | 82 | 80 |
78 | 72 | 70 |
60 | ↓ |
Grading Policies
-
Homework is due electronically (via Blackboard) before the start of class on the day it is due. Unlimited resubmissions within the deadline are allowed, but only the most recent is graded.
-
For grade disputes please contact the grader (the TA in most cases) first. You must initiate a dispute within a week of receiving your grade for the dispute to be considered.
-
Late work is penalized -10% per day late, up to a maxiumum of 4 days. Thus, an assignment submitted 2 days late which would have scored an 87 would instead receive a 67. An assignment submitted during class on the day it is due is considered one day late. An assignment which is more than 4 days late will not be accepted.
-
You may be required to show your Mason ID for exams. A missed exam will result in a zero.
-
Please contact the instructor as soon as possible if there are extenuating circumstances which affect your ability to complete an assignment or exam.
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:
- Directly using another student's solution to a problem, even if it is from a different semester.
- Asking a friend for a solution or paying someone for a solution.
- Searching for a solution in an outside source such as the Internet or a solution manual.
- Pasting your solutions to a public or semi-public site, including the message forum for this course (except in a private posts to the TAs).
- Collaborating or copying during exams.
- Assisting others in any of the above.
By constrast, the following is considered fair game during this course:
- Discussing the homework with other students in the class via informal, non-specific approaches to how a problem can be solved (do not share code, however).
- Getting help from classmates in solving a specific type of bug in a program (as long as it doesn't lead to discussing how the code should be structured).
- Searching on the Internet for alternate explanations of concepts discussed in class.
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
- Make backups of all of your work. We cannot grade what you do not submit, so guard against the possibility that something happens to your computer or your assignment by saving your work someplace else. Consider using a cloud backup such as Dropbox. Accidentally deleting your work is not grounds for an extension.
- Make sure that your code at least does something. If your code cannot compile or run due to errors, it is likely to receive little to no credit.
- Make sure to keep at least one untouched version of each assignment you submit. If there are issues with the submission, you will only receive credit if we can verify that it has not been modified since you submitted it.
- It is recommended that you complete each reading assignment before the class where it is shown, to be able to better follow the material.
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; Bit interpretation |
|
|
| week 3 |
Sep 9 |
Boolean logic |
Pattern chapter 2 |
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
|
|
|