How to contact us
Join the "coding" channel on slack! That is the only place where we will be answering questions or sending announcements about lessons. If you have a question please contact us there.
How to join
- Click on "add channels" below the list of channels
- Click on "browse channels"
- Search for "coding"
- Click the green "Join" button on the right
Learning Objectives

DAT-1.A: Representing Data with Bits
Basic Information
- Bit is short for 1 digit, and represents a value of either 0 or 1.
- A byte is 8 bits.
- Sequences of bits are used to represent different things.
- Representing data with sequences of bits is called binary.
Practice Questions:
- How many bits are in 3 bytes? 24 bits
- What digital information can be represented by bits? 1 and 0
- Are bits an analog or digital form of storing data? What is the difference between the two? digital, analog is continuous, while digital is in bits. #### Examples
- Boolean variables (true or false) are the easiest way to visualize binary.
- 0 = False
- 1 = True
import random
def example(runs):
# Repeat code for the amount of runs given
while runs > 0:
# Assigns variable boolean to either True or False based on random binary number 0 or 1.
boolean = False if random.randint(0, 1) == 0 else True
# If the number was 1 (True), it prints "awesome."
if boolean:
print("binary is awesome")
# If the number was 2 (False), it prints "cool."
else:
print("binary is cool")
runs -= 1
# Change the parameter to how many times to run the function.
example(20)
DAT-1.B: The Consequences of Using Bits to Represent Data
Basic Information
- Integers are represented by a fixed number of bits, this limits the range of integer values. This limitation can result in overflow or other errors.
- Other programming languages allow for abstraction only limited by the computers memory.
- Fixed number of bits are used to represent real numbers/limits
Practice Questions:
- What is the largest number can be represented by 5 bits? 31
- One programing language can only use 16 bits to represent non-negative numbers, while a second language uses 56 bits to represent numbers. How many times as many unique numbers can be represented by the second language? 2^40 times
- 5 bits are used to represent both positive and negative numbers, what is the largest number that can be represented by these bits? (hint: different thatn question 1) 15 #### Examples
import math
def exponent(base, power):
# Print the operation performed, turning the parameters into strings to properly concatenate with the symbols "^" and "=".
print(str(base) + "^" + str(power) + " = " + str(math.pow(base, power)))
# How can function become a problem? (Hint: what happens if you set both base and power equal to high numbers?)
exponent(10000, 10000)
# The program returns a overflow error
DAT-1.C: Binary Math
Basic Information
- Binary is Base 2, meaning each digit can only represent values of 0 and 1.
- Decimal is Base 10, meaning eacht digit can represent values from 0 to 9.
- Conversion between sequences of binary to decimal depend on how many binary numbers there are, their values and their positions.
Practice Questions:
- What values can each digit of a Base 5 system represent? 0,1,2,3,4
- What base is Hexadecimal? What range of values can each digit of Hexadecimal represent? base 16, 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
- When using a base above 10, letters can be used to represent numbers past 9. These letters start from A and continue onwards. For example, the decimal number 10 is represented by the letter A in Hexadecimal. What letter would be used to represent the Base 10 number 23 in a Base 30 system? What about in a Base 50 system? O,O #### Examples
- Using 6 bits, we can represent 64 numbers, from 0 to 63, as 2^6 = 64.
- The numbers in a sequence of binary go from right to left, increasing by powers of two from 0 to the total amount of bits. The whole number represented is the sum of these bits. For example:
- 111111
- 2^5 + 2^4 + 2^3 + 2^2 + 2^1 + 2^0
- 32 + 16 + 8 + 4 + 2 + 1
- 63
-
Fill in the blanks (convert to decimal)
- 001010 = 18
- 11100010 = 226
- 10 = 2
-
Fill in the blanks (convert to binary)
- 12 = 1100
- 35 = 100011
- 256 = 100000000
Hacks & Grading (Due SUNDAY NIGHT 4/23)
- Complete all of the popcorn hacks (Fill in the blanks + run code cells and interact + Answer ALL questions) [0.3 or nothing]
- Create a program to conduct basic mathematical operations with binary sequences (addition, subtraction, multiplication, division) [0.6 or nothing]
- For bonus, program must be able to conduct mathematical operations on binary sequences of varying bits (for example: 101 + 1001 would return decimal 14.) [0.1 or nothing]
from math import *
class Binary:
def __init__(self, binNum):
self.value = str(d2b(binNum))
def __str__(self):
return self.value
def __add__(self, other):
return Binary(b2d(self.value) + b2d(other.value))
def __sub__(self, other):
return Binary(b2d(self.value) - b2d(other.value))
def __mul__(self, other):
return Binary(b2d(self.value) * b2d(other.value))
def __truediv__(self, other):
return Binary(b2d(self.value) / b2d(other.value))
def d2b(num):
counter = floor(log(num, 2))
result = '1'
num -= 2 ** counter
for i in range(counter - 1, -1, -1):
if num >= 2 ** i:
num -= 2 ** i
result += "1"
else:
result += "0"
return int(result)
def b2d(num):
inp = str(num)
result = 0
for i in range(len(num)):
if inp[len(num)-i-1] == "1":
result += 2 ** i
return result
print(b2d("1100"))
a = Binary(24)
b = Binary(12)
print(a, b)
print("add")
print(a + b)
print("sub")
print(a - b)
print("mult")
print(a * b)
print("div (only works when integer answer)")
print(a / b)