"Computers are dull and boring; humans are clever and imaginative. We humans make computers exciting. Equipped with computing devices, we use our cleverness to tackle problems we would not dare take on before the age of computing and build systems with functionality limited only by our imaginations." -- Jeannette Wing
Course Description
or... Should I Take This Course?
This course is an
introduction to the field of Computer Science. It will cover the
breadth and impact of computer science on society; and what it means
to be a computer scientist. A large portion of the class will be
devoted to introducing the major concepts of computer science, and the
background needed to be successful as a computer science student such
as tools and terminology. Developing introductory programming
skills will be a major part of the course. Since the course is about
computational thinking and you will have to think, problem solve, and
practice skills both in the class and on your own... a lot. You should
plan on a minimum 3 hours outside of class for every hour in class.
Everyone is welcome to take this course, whether you are going on in computer science or not. However, this course has a specific audience in mind. This course is NOT FOR PEOPLE who have had nontrivial programming experience in a language such as C, C++, Python, Java, JavaScript, PHP, Lisp, etc. Also, you probably should not be in this course if you are currently taking calculus or higher level math. In these cases you should probably be enrolled in CS120. Furthermore, this course has a lot to do with procedural and symbolic abstraction. If you have trouble with algebra you might want to allow extra time for homework or consider waiting until you have a stronger grasp of algebra. Taking this course is really not a way to avoid doing math.
This course is for you if you would like a comfortable, relaxed, and fun beginning course in computer programming. Also, if want to understand a bit better about the future of the world you live in
One way to introduce Computer Science is by learning to program. All of the assignments will be programming assignments in a variety of computer languages of varying complexity, hopefully in an entertaining way. This course is for people who have little to no programming experience. It should give you confidence in the deep technical side of computers. But this course is not trivial. You have to think. Many people flunk this course. Be prepared to work.
This course is not about how to use applications like Word on a computer! It is how to begin to bend a computer to our will by designing and writing programs.
NOTE: if you have already taken CS120 you will NOT get credit for this course on your transcript!
Time: MWF 11:30-12:30 Pacific Time Final: None, BUT there will be an exam in the final test period! Exam Time: Monday May 9 at 10:15. It is an hour exam on processing. Location: TLC 22 Masks are required in class, vaccines highly recommended |
|
Textbook:
None (see the resources section throughout the semester)
|
Estimated Syllabus
This syllabus is AN ESTIMATE of what we might cover this semester. The class varies from semester to semester to reflect new and interesting topics and the rate at which the class is absorbing material.
Week | Monday |
Topics/Links | Assignments | Comments |
---|---|---|---|---|
wk 1 | Jan 10 |
Context. Software is everywhere. The information age.
What is computer science?
Computer science is about organizing process and data.
Any limits to computing?
Information and Representation: Files and data. Number systems and encoding things in bits. Hardware and Software. Operating Systems duties. |
NO CLASS ON MONDAY | |
wk 2 | Jan 17 | More about hardware and other glossary terms. Glossary of Computer Science Terms to Know for exam 1 | NO CLASS MONDAY | |
wk 3 | Jan 24 | Intro to Programming in Scratch, the Scratch interface, simple programming. x-y coordinate system. Sprites and motion. Program flow, loops, decisions. More simple programming, threads of execution, introducing pong | ||
wk 4 | Jan 31 | The Pong game and multiple threads of execution, inter-thread communication, interaction of sprites and background. What does it mean to be random? Randomness in our programs. Estimating pi and making random choices. | Assignment 1 | |
wk 5 | Feb 7 | I'm Thinking of a Number the guessing game (threads, messages, variables, scope (local and global)), factoring a number (sensing, software design), the fruit game (clones, messages, sensing) | Assignment 2 | |
wk 6 | Feb 14 | Vote on when we have Exam 1. Example questions from previous first exams. NetLogo and the dance program to understand turtles location and movement. Discrete vs continuous coordinate systems. The blocks program to understand patches. | Assignment 3 | |
wk 7 | Feb 21 | More virus simulation and the rabbits and grass simulation, plotting graphs and histograms, wolves and sheep, mathematical models and computer models, more on working with patches, the game of life, the philosophy of computing | Exam 1 on Wednesday | NO CLASS ON MONDAY |
wk 8 | Feb 28 | more game of life and control structures | Assignment 4 | |
wk 9 | Mar 7 | The virus simulator in Netlogo. Simple graphics with the Processing language, coordinates and shapes, the syntax of languages, the idea of type, the execution model, frame rate, mouse position | ||
wk 10 | Mar 14 | SPRING BREAK! | NO CLASS THIS WEEK | |
wk 11 | Mar 21 | Color models, conditional statements, loops, nesting of loops, functions, data vs function abstraction, new shapes Colorful dots program. Global and local variables. | Assignment 5 | |
wk 12 | Mar 28 | More bouncing ball program. sine/cosine/radians and degrees. Translating between polar (pirate) and Cartesian coordinates. | Exam 2 on Wednesday | |
wk 13 | Apr 4 | Polygons, functions and procedures, argument lists and argument passing. Procedure calls. | Assignment 6 | |
wk 14 | Apr 11 | The Clock program! More procedures, abstraction, local variables, loop syntax. Polar coordinates. | ||
wk 15 | Apr 18 | Intro to 1D arrays, physics engines, bouncing ball program. What so useful about subscripting a variable? The sieve of Eratosthenes and 1D arrays. | Assignment 7 | |
wk 16 | Apr 25 | 2D arrays, image processing, nested loops, PImage, Making simple image filters. Making some exotic image filters. More with color and transparency, saving images. | ||
wk 17 | May 2 | |||
wk 18 | May 9 | FINALS WEEK; TEST OVER PROCESSING |
Class Support
These are resources for help if you are having problems with anything in the course:- CSAC is the Computer Science Assistance Center and is staffed with people to help. They are now located in JEB 211.
- My office hours are a time you can drop by and ask questions or bring up concerns. They can be found in my schedule and unfortunately may change as the semester progresses: My schedule
References
- A Emacs editor reference card
- A Vim editor reference card
- Powers of 2
- ASCII table
- Glossary of Computer Science Terms to Know
- Binary numbers: encoding things in bits
- Numbers representing colors
- 3D printed violin demonstration [video]
- Design of 3D printed violin [video]
- Amateur Bike Time Trial recorded [video]
- Boston Dynamics "Big Dog" from 2008 [video]
- Boston Dynamics "Big Dog" from 2010 [video]
- Boston Dynamics Spot Mini dances to Uptown Funk 2018 [video]
- Boston Dynamics Atlas Robot [video]
- Horsetooth time trial series [video]
- How to make a Navajo rug [video]
- How to make a stone tools [video]
Scratch
- The Scratch Web Site
- Example code:
- None yet
NetLogo
- The NetLogo Homepage
- Example code:
- None yet
Processing
- The Processing Web Site
- A segment of code providing 170 color names as global variables. Put this file in the directory of your Processing program if you want to use these colors
- A handout on converting from polar (pirate) coordinates of angle and distance to Cartesian coordinates x and y
- Three planetary slingshots to get to a comet!
- Some medium sized pictures to play with
- Example code:
- None yet
CS in the News
- This is how journalists figure out if all those Ukraine videos are real
- New Literacy Project Resources
- Domestic abuse via technology, Tools for dealing with domestic abuse via technology
- Is the smart home the new "cup holder"?
- AI in medicine
- Elephants Under Attack Have An Unlikely Ally: Artificial Intelligence
- One company is optionally chipping their employees
- Lethal Autonomous Weapons Systems (LAWS) Kalashnikov's line of LAWS, UN background on LAWS
- Life saving medical delivery drones by Zipline fly in Tanzania
- Scientists use computers to find possible Planet X
- India and mobile payments
- Learning to identify a location from just picture
Services
- For each assignment follow the instructions for that assignment for where to turn in the work. Wait for each assignment to be assigned before starting work on any assignment. Assignments will be announced in the class news and posted in the assignment schedule when the assignments are made.
- For the first assignment use homework submission page to submit you homework. Your name is your UI mail id (usually 4 letters followed by 4 digits. Do NOT include any thing like @vandals.uidaho.edu). Note: it will ask you to log in. Be sure you get the success message after hitting the submit button. If you don't get the success message with a time stamp you have not submitted your homework. If your file is not the right type of file it will return an error. Within ten minutes it should mail you at your university email address with a simple confirmation message.