Welcome to Lesson 1
Learning Objectives for Today's Lesson
By the end of today's lesson, you will know... - The Growth Mindset
- Why study computer science?
- Policies and procedures for this class
- Name and describe the five main components of a computer.
- Describe the difference between hardware and software.
- Give the definition of an algorithm and write your own algorithms for tasks.
- Describe the difference between natural (human) and programming languages.
- Describe and define a compiler.
- Change numbers in the decimal system to the binary system and vice versa.
1. Welcome to the Class!
Congratulations! You are making a smart decision to take a course in computer science. Here's why:
Why Study Computer Science?
1. Studying Computer Science will make you smarter.- You will learn a whole new way of thinking and solving problems.
- Computer science is challenging and will help you exercise your brain.
- Salman Khan, of the Khan Academy:
- Wrote an article called "The Learning Myth: Why I Will Never Tell My Son He Is Smart"
- No one is born knowing how to do anything. We get smarter as we learn.
- "The brain is like a muscle; the more you use it, the more it grows."
- "[N]eural connections form and deepen most when we make mistakes doing difficult tasks rather than repeatedly having success with easy ones."
- "Our intelligence is not fixed, and the best way we can grow our intelligence is to embrace tasks where we might struggle and fail."
- You can learn anything! (as long as you are prepared to try, struggle and sometimes to fail).
- ***This is the philosophy with which I would like us to approach this class!***
- Remember: You learn more when you answer a question wrong than when you answer it right!
2. Studying Computer Science is FUN!- Computer science is a lot of fun if you are the type of person who enjoys creating things and solving puzzles.
- If you don't enjoy those kinds of things now, maybe you will by the end of the class.
- From the first day: Lots of hands on activities.
- Every class you will be creating your own programs.
3. You Can Get a High-Paying Job Statistics for software engineers locally:
Comparison with Other Types of Employment:
Recent Grad Salaries at Top Companies:
Plus, many job perks such as free snacks and food, free laundry, flexible schedules, telecommuting opportunities and more!
4. Computer Science Is Important In Any Career Path - Learning how to program is an important skill for any field.
- You don't have to be a software engineer to use your programming skills.
- Some examples, based on possible student interests:
Medical Field
- New York Times Article by
David Patterson, a CS Prof at UC Berkeley: "Computer scientists may
have the best skills to fight cancer in the next decade — and they
should be signing up in droves." Computer programs can sequence the
genes of a patient's tumor to determine which medications will be most
effective. Programmers are changing the way cancer is treated.
- January 2018 NPR article on cancer vaccines using computer programming
- Another NYT Article, this time by Austin Frakht entitled Your New Medical Team: Algorithms and Physicians: Doctors assisted by computers can provide more accurate diagnosis of patient conditions.
Professional Sports
- Sports statisticians using programming skills to help them analyze data about professional sports and make recommendations to coaches.
Space and Aviation
The Environment
Art and Literature
- Artists and writers can create interactive works of art and fiction using programming skills. Here is an example of interactive fiction by famous author Emily Short.
Psychology
- Important fields that combine knowledge of psychology and computer science:
- Human Computer Interaction (HCI) - the study, planning, design and uses of interfaces between humans and computers.
- Cognitive
Science - the interdisciplinary study of the human mind and its
processes. In this field, computers are used to simulate the human
brain, enhance its thinking powers or to help scientists test their
theories about human thinking. Cognitive scientists often take many
programming classes. (More information)
Agriculture
- E-agriculture
is an emerging field focused on enhancing agriculture through the use
of technology. For example, designing programs to help model ways of
increasing crop yields.
Video games
- Learn how to design and program your own games!
Learning how to program will open up a lot of opportunities for you!:
2. Introduction to the Course 1. 36A vs 35A
2. Course Format
- 2 Lessons Assigned per Week - released on Sunday
- Watch lesson videos on Canvas
- Complete Activities for first lesson due Tuesday at 11:59pm
- Complete Activities for second lesson due Thursday at 11:59pm
- 2 Assignments per week
- first Assignment due Friday at 11:59pm
- second Assignment due the following Tuesday at 11:59pm
- Assignments to be completed in pairs following rules of pair programming outlined in class
- Find a partner using Piazza and meet up using Zoom
3. My advice
- This class will get harder as it goes along
- As you learn more, there is more you can do
- Do your work the night it is assigned
- You will have plenty of time to get help
- Get help right away!
- Email... office hours... TA office hours... piazza
- Expect to get stuck sometimes
- Computer Science is challenging!
- It is perfectly normal to find something hard.
- You can do it! But, don't put off getting help!
- Don't be intimidated by those who have studied computer science before
Activity 1.1: The Growth Mindset (10 pts)- Watch the video by Salman Kahn and read the associated article.
- Then, watch this video where Kahn interviews Stanford's Carol Dweck, who researched growth mindset.
- Then, answer the questions on the below worksheet
- Upload your completed assignment to Canvas as a pdf, doc, docx, txt, or odt file
Activity 1.2: How to Make Friends with Stress (10 pts)- Watch the video by Dr Kelly McDonigal
- Then, answer the questions on the below worksheet
- Upload your completed assignment to Canvas as a pdf, doc, docx, txt, or odt file
3. Main Components of a ComputerBackground Information
- Computer Science focuses on the design and creation of computer software
- Computer Engineering focuses on the design and creation of computer hardware.
- Although
we are studying Computer Science (software), it is still important for
us to have a general understanding of computer hardware.
Computer Hardware- Input device(s) - allow a user to communicate to a computer. Mouse, keyboard.
- Output device(s) - allow computer to communicate to you. Screen (Monitor), Printer. Speakers.
- CPU -
Central Processing Unit - the "brain" of the computer. Executes
programs, performs simple calculations, moves data from one memory
location to another.
- Main memory -
Also known as RAM or Random Access Memory. This is the memory that
people refer to when they say "How much memory does your computer
have?"
- Main memory consists of
numbered memory locations. Each location in memory is given an
"address." The RAM can access each memory location directly by going to
that "address."
- Think of the
RAM as the computer's scratch paper or short term memory. It doesn't
store information permanently there. But, uses the memory addresses to
temporarily store information it needs as it does its calculations.
- Secondary memory - This is the permanent memory. The hard disk, CDs, Flash drives, external hard drives. Can you think of anything else?
- Memory
here is stored as files. Secondary memory is generally slower because
the computer must search through memory locations sequentially to find a
file. Unlike the RAM, the computer cannot access a file directly by its
address in secondary memory.
More Information- PC World article on the difference between the hard drive (HD) and a solid state drive (SSD)
Group Activity: Where are the different components located on your computer?- Input devices
- Output devices
- CPU
- Main memory
- Secondary memory
4.1. Computer Software and Algorithms- Program - a sequence of instructions given to a computer. These instructions are executed in order by the Central Processing Unit (CPU).
- The computer follows the instructions in the program to complete some task.
- In the Hour of Code, the instructions you give your character are executed in order.
Algorithms- Programs are often based on algorithms which are converted into code by the programmer.
- An algorithm is a sequence of precise instructions on how to accomplish a task
- The process of developing algorithms is much in demand in today's computerized world
- For example:
- Game characters follow algorithms to respond to game events.
- Medical equipment measures and monitors people's medical conditions following algorithms.
- Day Traders on Wall Street write computer algorithms to decide when to buy and sell stocks.
- In everyday life we can develop algorithmic solutions to natural problems and improve our lives.
- For example, we may develop an algorithm for the easiest or most efficient way to get to school.
- To develop an algorithm, we start with an analysis and decompose the problem into steps.
- When we have an algorithm for one problem, we then generalize it to solve similar problems.
- Examples of algorithms:
- A recipe is an algorithm created so others can replicate a dish
- When a composer writes music, she is creating an algorithm to play a song
- A coach creates a play in a team sport, like football or soccer, which is an algorithm for the players to follow during a game.
- In mathematics, people follow algorithms for math operations such as adding numbers with several columns of digits:
- Add the numbers in each column
- Then add the partial sums

How to Write an Algorithm- When we design algorithms, we need to write them simply so anyone can use them
- This means that we cannot have long formulas or compound statements that are difficult to understand
- Instead we must break everything down into simple steps
- Every statement can only say how to do one simple thing
- A good first approach is to work out an example. Then, try to generalize from the example.
- As we will see, this is how computers work
Activity 1.1: Sandwich Algorithm (10 pts)- Imagine that you have a friend who has never made a sandwich before.
- Can you give step-by-step instructions for how to make a peanut butter sandwich?
- Copy and paste the contents of this worksheet into a blank document (MS Word or another Google doc).
- Write your name at the top.
- Fill in the remaining steps for making a peanut butter sandwich
- Try to write your own algorithm - don't just copy off the internet
- When you are finished, upload your worksheet to Canvas under Activity 1.1
4.2. Programming Languages and the Compiler
- What are some examples of languages you speak?
- These languages are used to communicate with people.
- Programming languages are similar to human languages, but are designed to communicate with machines.
- Used to communicate instructions to the computer.
- The problem: Computers only understand 1s and 0s.
- Difficult for humans to understand 1s and 0s.
- We need a translator!
- Java is a programming language which was created because it is easy for
humans to use and understand. It is called a high-level language.
Computers cannot understand Java directly because the instructions are
not written in 1s and 0s.
- Other high level languages include PHP, Python, C, C++.
- Instructions written in these languages are called source code.
- Programs written in these languages need to be translated into a format the computer can understand.
- A Compiler is a program that translates a
high-level language program, such as a Java program, into a
machine-language program that the computer can directly understand and
execute.
- Compilers are also useful because they let you know when you have made certain types of mistakes in your program.

5. Introduction to Binary Numbers - The Language Computers Understand
- Video: How Computers Work Part 1
- Bit = a binary digit = one 0 or 1 digit.
- Byte = 8 bits
- Why does a computer understand only 0s and 1s?
- Understanding Base 10 (Decimal) (on white board)
- Understanding Base 2 (Binary) (on white board)
Activity 1.2: Binary and Decimal Worksheet (10 pts) - Copy and paste the binary-decimal worksheet into a new document on Word, Open Office, Libre Office, Notepad or Google Docs.
- Convert the given binary numbers to decimal numbers and decimal numbers to binary numbers
- Please show your steps
- Upload the completed worksheet to Canvas when you are finished under Activity 1.2.
- Answer the following questions:
- What are the five main components of a computer?
- What is the difference between hardware and software?
- What is an algorithm? What is a program? How are they different?
- Why does a computer only understand 1s and 0s?
- Define a programming language
- What is a compiler?
- Activity 1.1 and 1.2 due Tuesday at 11:59pm
- Quiz 1 due Friday at 11:59pm on Canvas
- Assignment 1 due Friday at 11:59pm on Canvas
~ Have a Great Day! ~ |