ECE 120

ECE 120 - Introduction to Computing

Spring 2022

TitleRubricSectionCRNTypeHoursTimesDaysLocationInstructor
Introduction to ComputingECE120AB161612DIS00900 - 0950 R  1013 Electrical & Computer Eng Bldg Hangzheng Lin
Introduction to ComputingECE120AB261615DIS01000 - 1050 R  1013 Electrical & Computer Eng Bldg  Andy Liu
Introduction to ComputingECE120AB361616DIS01100 - 1150 R  4070 Electrical & Computer Eng Bldg 
Introduction to ComputingECE120AB461617DIS01200 - 1250 R  4070 Electrical & Computer Eng Bldg Lijian Wang
Introduction to ComputingECE120AB561618DIS01300 - 1350 R  3013 Electrical & Computer Eng Bldg Yanan Liu
Introduction to ComputingECE120AB661619DIS01400 - 1450 R  3081 Electrical & Computer Eng Bldg Yuanbo Zhang
Introduction to ComputingECE120AB861622DIS01600 - 1650 R  3081 Electrical & Computer Eng Bldg 
Introduction to ComputingECE120ABA61624DIS01400 - 1450 R  3020 Electrical & Computer Eng Bldg Christopher Jayun Ryu
Introduction to ComputingECE120ABB61626DIS01500 - 1550 R  3020 Electrical & Computer Eng Bldg  Andy Liu
Introduction to ComputingECE120ABC61627DIS01600 - 1650 R  3020 Electrical & Computer Eng Bldg Hangzheng Lin
Introduction to ComputingECE120ABD64142DIS01700 - 1750 R  3020 Electrical & Computer Eng Bldg 
Introduction to ComputingECE120AL61606OLC40900 - 0950 M W F     Kirill Levchenko
Introduction to ComputingECE120AL263651LEC41300 - 1350 M W F  3017 Electrical & Computer Eng Bldg Ujjal Kumar Bhowmik
Introduction to ComputingECE120AL463653OLC41000 - 1050 M W F    Anu Aggarwal
Introduction to ComputingECE120ZJ171191PKG41900 - 1950U T    Volodymyr Kindratenko
Introduction to ComputingECE120ZJ171191PKG41800 - 1850 R    Volodymyr Kindratenko
Introduction to ComputingECE120ZJ171191PKG40200 - 0250 R    Volodymyr Kindratenko
Introduction to ComputingECE120ZJ269956PKG41800 - 1850 R    Volodymyr Kindratenko
Introduction to ComputingECE120ZJ269956PKG41900 - 1950U T    Volodymyr Kindratenko
Introduction to ComputingECE120ZJ269956PKG40200 - 0250 R    Volodymyr Kindratenko
Introduction to ComputingECE120ZJ373824ONL41800 - 1850 R    Volodymyr Kindratenko
Introduction to ComputingECE120ZJ373824ONL41900 - 1950U T    Volodymyr Kindratenko
Introduction to ComputingECE120ZJ373824ONL40200 - 0250 R    Volodymyr Kindratenko
Introduction to ComputingECE120ZJ473825ONL41800 - 1850 R    Volodymyr Kindratenko
Introduction to ComputingECE120ZJ473825ONL41900 - 1950U T    Volodymyr Kindratenko
Introduction to ComputingECE120ZJ473825ONL40200 - 0250 R    Volodymyr Kindratenko

Official Description

Introduction to digital logic, computer systems, and computer languages. Topics include representation of information, combinational and sequential logic analysis and design, finite state machines, the von Neumann model, basic computer organization, and machine language programming. Laboratory assignments provide hands-on experience with design, simulation, implementation, and programming of digital systems. Course Information: Prerequisite: Restricted to Computer Engineering or Electrical Engineering majors or transfer students with ECE Department consent.

Subject Area

  • Core Curriculum

Course Director

Website

https://canvas.illinois.edu/courses/14248

Goals

ECE 120 is a freshman engineering course. Its goal is to teach the fundamentals of computing so that students can understand the connections between hardware and software when developing computing systems.

Topics

  • Representation of information
  • Boolean algebra
  • Combinational network analysis and design
  • Sequential network analysis and design
  • Computer organization and machine-level programming
  • Programming in C

Detailed Description and Outline

Description: ECE 120 gives an introduction to the design and programming of computing systems. We start the course by motivating our objectives and connecting them with students’ future ECE studies and career paths. The philosophy of our approach is quite different than the typical introduction to programming course: after a brief illustration of our goals and objectives with a quick introduction to C, we approach programming from the bottom upwards. In particular, we begin by describing the architecture of a computer, including logic gates, datapaths, registers, and memory. Throughout the course, we will make connections between hardware and software and explore the engineering tradeoffs in using each to develop computing systems.

Outline:

  • Abstraction, bits, unsigned representation, signed integers, 2’s complement representation, fixed- and floating-point representation, hexadecimal notation, ASCII representation, unsigned binary addition, modular arithmetic, carry out, overflow
  • Introduction to digital logic, CMOS, logic gates, truth tables, Boolean logic operations, Karnaugh maps, sum-of-product, product-of-sums, logical completeness, Boolean properties, two-level design, Pareto optimization, don’t care simplification
  • Introduction to UNIX, introduction to C programming (operators, functions, statements), flow chart, sequential construct, conditional construct, iterative construct, program execution, program analysis, program testing
  • Bit-sliced design, ripple-carry adder, bit-sliced comparator, 2’s complement comparator, building with abstraction, multiplexers, decoders
  • Clock abstraction, latches, flip-flops, shift registers, registers with parallel load, serialization
  • Finite state machines (FSM), binary counters, FSM models, clock synchronous design, modular FSM design (keyless car entry, vending machine)
  • Concept of memory, address space, addressability, building larger memory using smaller memory, coincident selection, tri-state buffer
  • The von Neumann model, LC-3 as von Neumann, instruction processing, instruction set architecture, control unit design, assemblers and assembly code
  • Error detection and correction, odd/even parity bit, Hamming distance, Hamming code

Computer Usage

There are assignments for most of the weeks on UNIX workstations. Some assignments introduce students to UNIX environment, Linux and programming tools. Some assignments utilize a commercial schematic capture and simulation software to teach combinational and sequential logic design concepts. Some assignments complement previous assignments by using a hands-on approach to implement a hardware-equivalent design. Some assignments are programming assignments requiring students to write programs in C, binary machine language, and assembly.

Lab Equipment

ECE 120 Lab Kit custom built for the Department of Electrical and Computer Engineering at the University of Illinois at Urbana-Champaign

The kits are self-contained so that labs can be completed by students anywhere with a 120VAC power source.

Lab Software

Altera Quartus for circuit design and simulation. This software is also used in a future core course, ECE 385.

Texts

Yale N. Patt and Sanjay J. Patel, Introduction to Computing Systems: from bits and gates to C and beyond, 2nd Edition, McGraw-Hill, 2003.

Class Notes by Prof. Lumetta.

Course Goals

As an introductory course to digital logic, ECE 120 demonstrates the relation between Boolean algebra as a formal framework for describing real-world problems, circuits implementing Boolean expressions that can be simulated using digital design software, and digital circuits physically built with TTL chips. By using the three modalities (Boolean expressions, circuit drawings and simulations, and actual hardware implementation), students are exposed to the digital systems design cycle, from the problem formulation stage to the actual hardware implementation and verification stage.

As an introductory course to computer systems, ECE 120 shows the relation between the hardware, software, and the interface between them. The students are exposed to computer microarchitecture, they have hands-on experience in programming using binary machine instructions and in the assembly language. This sets the stage for ECE 220 course in which the students learn programming using high-level languages.

Instructional Objectives

After completing this course, students should:

  • understand the role and importance of abstraction in computing systems (1)
  • recognize and be able to make use of standard digital components in designing simple combinational logic (1, 2)
  • be able to design and implement a simple finite state machine (FSM) as a clock-synchronous sequential circuit using digital logic (1, 2)
  • be able to design and implement a simple FSM using assembly language (1, 2)
  • understand the principles of computer organization and understand how computers execute instructions (1, 2, 6),
  • be able to write simple programs in both C and assembly language (1, 2, 6)
  • develop the skills required to solve engineering problems (1)

Since this is a freshman course, we also have explicit objectives for providing students with an understanding of the profession. In particular, students who have completed this course should:

  • understand the expectations of the engineering discipline in terms of effort, quality, and objectivity (1, 3, 4)
  • recognize that self-motivation and lifelong learning are necessary to success in engineering (4, 7)
  • be able to articulate the importance of understanding tradeoffs and be able to recognize and identify basic design tradeoffs (1)

Last updated

9/21/2021by Steven Lumetta