Category:I600 Introduction to Computers and Informatics
In this course we'll give an introduction to variety of topics from hardware to software. The course will follow roughly the same structure as Computer Science 101 at Stanford University with more hands-on approach. This course substitutes Estonian courses I100 Sissejuhatus informaatikasse and I201 Arvutid.
Monday lectures will cover more theoretical stuff; Thursday workshops are for getting started with new topics; the homework assignments connect theoretical with practice and Tuesday sessions are for follow up, asking/answering questions and presenting homework. Bring your laptops for Tuesday and Thursday sessions.
Course credits: 6 ECTS
Lecturer: Lauri Võsandi
E-mail: lauri [donut] vosandi [plus] i600 [ät] gmail [dotchka] com
Grading
Grade mapping:
- 0-50 points, fail
- 51-60 points, pass 1
- 61-70 points, satisfactory 2
- 71-80 points, average 3
- 81-90 points, good 4
- 91-100 points, very good 5
Grading is split between theory and practice
- Exam of 50 points, preparation in lectures and general discussion in workshops.
- Assignments, see instructions and points below.
- Extra points for improving quality of wiki articles and extracurricular work, see points below.
Lecture: Introduction to computer hardware
Lecture recording #2 starting 12:30
Lecture slides Random access memory, permanent storage, buses, input devices, display technologies, networking
Potential exam questions:
- Different buses and their uses
- What are the differences between hard disk drive (HDD) and solid state drive (SSD)? [1]
- What is the purpose of Flash Translation Layer in terms of solid state drives?
- What are difference between volatile/non-volatile, RAM, ROM, EEPROM and where are they used?
- What is data retention?
- What are difference between asynchronous/synchronous, dynamic/static RAM and where are they used?
- What is cache? What is cache coherence?
- What are differences between resistive and capacitive touchscreen? [2]
- Explain how computer mouse works? History of computer mouse.
- Explain how computer keyboard works? HowStuffworks article Explain that Stuff article Keyboard History
- Explain how cathode ray tube (CRT) based screen technology works and name pros/cons. [3]
- Explain how liquid crystal displays (LCD) work and name pros/cons. [4]
- Name screen technologies making use of thin film transistor (TFT) technology? [5]
- Name uses for light polarization filters? [6] [7]
- What are the benefits of twisted pair cabling and differential signalling?
- Active matrix vs passive matrix in display technology
Jargon: CPU, RAM, ROM, HDD, SSD, PCI, PCI Express, USB 2.0, USB 3.0, VGA, HDMI, DVI, LCD, TFT, LED, OLED, AMOLED, CRT, PWM
Assignments:
Lecture: Storage abstractions
Lecture recording #2 starts at 47:50.
- What is a block device?
- What is logical block addressing and what are the benefits compared to older cylinder-head-sector addressing method in terms of harddisks?
- What is a disk partition?
- What is a file system?
- What is journaling in terms of filesystems and what are the benefits? Name some journaled filesystems in use nowadays.
Jargon: block device, disk, partition, file system, directory/folder, file, FAT32, NTFS, ext4, HFS+
Lecture: Bootloaders
In this lecture we'll discuss how a computer starts up and how an operating system is booted up.
Lecture: Introduction to code execution
In this lecture we'll talk about writing and running code.
Potential exam questions:
- What are the differences between interpreted, JIT-compilation and traditional compiling?
Assignments:
Lecture: Introduction to data encoding
In this lecture we'll talk about bits, bytes, integers, strings, pixels, audio encodings, video encoding etc.
- What is bit? Nibble? Byte? Word?
- What is quantization in terms of signal processing?
- How are integers stored in binary? What integer range can be described using n bits? How many bits are required to describe integer range from n .. m.
- How are single precision and double precision floating point numbers stored in binary according to IEEE754 standard?
- What is the difference between CMYK and RGB color models? How are YUV, HSV and HSL colorspaces related to RGB? What are sRGB and YCbCr and where are they used?
- How is data encoded on audio CD-s?
- What is sampling rate? What is bit depth? What is resolution?
- What is bitrate?
- What is lossy/lossless compression?
- What is JPEG suitable for? Is JPEG lossy or lossless compression method?
- What is PNG suitable for? Does PNG support compression?
- How are time domain and frequency domain related in terms of signal processing? What is Fourier transform and where it is applied?
Jargon: 44.1kHz sampling rate, 16-bit audio, RGB565 pixel format, RGB888 pixel format
Lecture: Introduction to Y
Potential exam questions:
- What is Moore's law? What is Rock's law?
- What are the differences between linear vs switching power regulation? [8]
- What is resistance? Capacitance? Inductance?
- What is resistor? Capacitor? Inductor? Transistor?
In this lecture we'll talk about Y
Lecture: Introduction to Boole algebra
Assignments:
Assignment: Investigating PC hardware
Goal: Get familiar with your laptop hardware. Get out of the comfort zone of your primary operating system and try out other operating systems.
Deadline: 16. September
Credits: 4 points plus extra point for being extra thorough about interpreting what you see.
Use what you learned in Getting started with Ubuntu workshop:
- Place your preferred ISO image to a memory stick using
dd
or Win32 Disk Imager and boot it on your personal laptop. You do not need to install Ubuntu on your harddisk, simply click Try Ubuntu once the operating system boots off the memory stick and carry out following tasks. - Open up terminal by pressing
Ctrl-Alt-T
. - Use
lsb_release -a
to check what operating system distribution you're running. - Use
uname -sr
to check what operating system kernel you're running. - Use
cat /proc/cpuinfo
and check processor information. What CPU model and how many cores your computer has? - Use
arch
to check what CPU architecture is being used by the operating system. Is it 32-bit or 64-bit? - Use
cat /proc/meminfo
to check memory usage. How much RAM your computer has? - Use
lspci -t -v -nn
to enumerate PCI and PCI Express devices, attempt to identify what is what. - Use
lsusb
andlsusb -t
to enumerate USB devices, again attempt to identify what is what. - Use
fdisk -l
to enumerate disks and partitions. How big is your harddisk? How many and how big partitions it has? - Use
lsblk
to enumerate block devices. - Use
xrandr
to enumerate display outputs. What video output resolutions are available and which one is currently used? - Use
cat /proc/asound/cards
to check which audio devices are available. - Use
dmidecode
to see even more information about your computer. - Use
ifconfig -a
orip addr list
to list all network interfaces. - Use
iwconfig
oriw list
to list all wireless network interfaces. Is your wireless network interface detected? If not take a guess why? - Use
hcitool dev
to list bluetooth host controller. Is your bluetooth device detected? - Use
glxinfo
to check what 3D rendering capabilities are available, is it hardware accelerated? (hint: is direct rendering enabled?) - What audio card is your machine using? What bus is it using?
- What graphics controller is your machine using? What bus is it using?
- What webcam is your machine using? What bus is it using?
- What wired network chipset your computer has? What bus is it using?
- What wireless network chipset your computer has? What bus is it using?
- What Bluetooth device your computer has? What bus is it using?
- Is there a cellular modem connected and how it's connected?
- Boot the ISO image in VirtualBox and follow the same steps as above, what are the differences and why?
- Collect command outputs, answer to questions and send it as plain text e-mail to Lauri, make sure you use the address supplied above with the course code.
Note that I can't expect you to install Ubuntu on your physical machine, but I can help if you want to do that. You should have Ubuntu ready to go in a virtual machine at least for subsequent sessions. We're using Ubuntu because it's widely used on servers and in the cloud, so any Ubuntu skills will definitely come handy in future. If you're already familiar with Linux, it's suggested to take a look at other interesting operating systems such as FreeBSD or OpenBSD. Take a look at Kali Linux if you're interested in penetration testing.
Assignment: Investigating embedded hardware
Additional session available on 15. of September in room 319, if you need help with Ubuntu or Raspberry Pi. There you can also make use of school computers running Ubuntu if you have issues booting Ubuntu on your machine.
Background: Most of the smartphones nowadays are using SoC built around ARM processor. Raspberry Pi is an excellent piece of hardware to for checking out how an ARM-based machine looks like.
Goal: Get familiar with hardware ARM-based hardware.
Deadline: 23. September
Points: 4 points
Use what you learned in Getting started with Ubuntu and Getting started with Raspberry Pi workshops:
- Read the instructions before you get busy.
- Boot Raspbian on Raspberry Pi.
- Use the commands described in previous assignment to examine the environment of Raspbian on Raspberry Pi. What are the major differences compares to your laptop and virtual machine?
- What filesystems is Raspbian making use of?
- Optional: Set up SSH public key authentication to
enos.itcollege.ee
.
Assignment: Investigating LAMP
LAMP software bundle is consists of Linux-based OS, Apache web server, PHP programming language runtime and MySQL database. Most of the web applications on the Internet including Facebook are built on top of LAMP-styled software stack. Use a Raspberry Pi to set up WordPress, ownCloud or any well-known web application that makes use of a database. To make your life easier also set up SSH public key authentication.
Goal: Get familiar with LAMP stack. Get comfortable with (SSH) public key authentication.
Deadline: 30. September
Points: 4 points
Tasks:
- Use SSH to connect to your Raspberry Pi over the network. If you're using Windows on your laptop use PuTTY to gain access to command line and WinSCP to copy files, otherwise simply boot Ubuntu in a virtual machine.
- Set up public key authentication to your Raspberry Pi. Windows users might want to take a look at PuTTYgen instructions.
- Set up any of the web applications referenced above.
- Optional: Set up SSH public key authentication to
enos.itcollege.ee
.
Demonstrate that the web application you installed works in next Tuesday session.
Assignment: X
- In next session: Demonstrate that you can log in using SSH to
enos.itcollege.ee
using public key authentication (without password).
Assignment: Investigating compilers
Deadline: TBD
Use code for calculating Fibonacci series as an example input. You're encouraged to use any other code snippet you can handle.
int main() { int c; long int first = 1; long int second = 1; long int next; for (c = 0; c < 10; c++) { printf("%d ", first); next = first + second; first = second; second = next; } }
Steps:
- Install GNU Compiler Collection:
apt-get install gcc
- Store the code snippet in a file and compile it:
gcc fibonacci.c -O fibonacci
- Verify that the executable works:
./fibonacci
- Install ARM cross-compiler:
apt-get install gcc-arm-linux-gnueabihf
- Compile ARM assembly of the code snippet:
gcc -S fibonacci.s -O fibonacci.s
- Recompile with different optimization levels:
-Os
,-O0
,-O1
,-O2
and-O3
. What are the differences? - Comment the ARM assembly
Assignment: Investigating microcontrollers
In this assignment we use Arduino:
- Install Arduino IDE on your personal machine.
- Use analog input to measure distance using proximity sensor and map it to hue.
- Use Atmega built-in functionality for generating PWM signals to drive RGB LED.
- Use LCD1602 shield to display current values.
- Use interrupts to read button presses
Assignment: Designing arithmetic-logic unit
In this assignment we use SN7400 chips to build a 4-bit arithmetic-logic unit. Form teams of 6. You'll be given 3x breadboards, 30x SN7400 chips, jumper cables, slide switches, LED-s, resistors. Use: breadboard to connect the components; four slide switches for operand A; four slide switches for operand B; four slide switches to select ALU operation mode and four LED-s as outputs. Make sure you protect LED-s with resistors.
Deadline: TBD
Points: 4 points
Assignment steps:
- Considering 5V power supply, voltage drop of 1.8V on LED and maximum current of 20mA what is the minimum resistance for the protective resistor?
- Each SN7400 contains four NAND gates. Use two SN7400-s to compose a full adder. Use four full adders to compose 4-bit carry-ripple adder. Verify your adder works.
- Add switch for toggling between adding/subtracting, you can achieve this by inverting bits of operand B and carry in. Verify that addition and subtraction works as expected.
- Add circuitry for calculating bitwise NAND and NOR operations on operand A and operand B.
- Add 2:1 muxes to select between NAND and NOR.
- Add 2:1 muxes to select between NAND/NOR output and adder/subtractor output.
- Evaulate the cost of your design. Evaluate the energy consumption of your design?
Present your solution in Tuesday session.
Extra points
Here you can claim extra credit points for various tasks, this is mostly to improve the quality of wiki.itcollege.ee. Once you have taken care of the task insert your name in the end of the line with corresponding date.
- Expand Getting started with Ubuntu#Installing in VirtualBox section with highlighted screenshots of VirtualBox. Points: 1p
- Create Claiming GitHub Student Developer Pack with screenshots how to add @itcollege.ee e-mail to your GitHub profile and claim Student Developer Pack Points: 2p
This category currently contains no pages or media.