Category:I600 Introduction to Computers and Informatics

From ICO wiki
Jump to navigationJump to search

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.


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.


Lecture: Introduction to computer hardware

Lecture recording

Lecture slides

Potential exam questions:

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: 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 code execution

In this lecture we'll talk about code execution in processor.

Assignments:

Lecture: Introduction to Y

In this lecture we'll talk about Y

Lecture: Introduction to Z

In this lecture we'll talk about Z


Assignment: Investigating PC hardware

Deadline: 16. September

Credits: 4 points plus extra point for being extra thorough

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 use memory stick to boot the machine 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 what CPU model and how many cores your computer has.
  • Use arch to check what CPU architecture is being used by the operating system.
  • Use cat /proc/meminfo and check 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 and lsusb -t to enumerate USB devices, again attempt to identify what is what.
  • Use fdisk -l to enumerate disks and partitions.
  • Use lsblk to enumerate block devices.
  • Use xrandr to enumerate display outputs.
  • 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 or ip addr list to list all network interfaces.
  • Use iwconfig or iw 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 deviced 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? How is it connected to your machine? What video output resolutions are available and which one is currently used?
  • 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.

If you're already familiar with Linux, it's suggested to take a look at other interesting operating systems such as FreeBSD or OpenBSD.

Assignment: Investigating embedded hardware

Deadline: 23. September

Points: 4 points

Use what you learned in Getting started with Ubuntu and Getting started with Raspberry Pi workshops:

  • Instructions will be added by second week of September


Assignment: Investigating X

Deadline: 30. September

Points: 4 points


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: 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: 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.

This category currently contains no pages or media.