|Politecnico di Torino|
|Academic Year 2017/18|
Algorithms and Computers Architecture
1st degree and Bachelor-level of the Bologna process in Electronic Engineering - Torino
The course targets two goals: from the one hand, it aims at providing the basics of Object-Oriented Programming, with emphasis on C++ and, from the other hand, at teaching the most significant manual design methodologies for digital systems and at introducing the basics of Computer Architectures.
The course provides an integrated approach to the above-mentioned topics, enhancing their mutual interactions, especially when dealing with embedded systems.
Expected learning outcomes
Knowledge of Object-Oriented Programming methodologies;
Capability of advanced programming on C++ language;
Knowledge of the most significant computer architectures and their internal structures and organizations;
Knowledge of elementary building blocks of Processing elements;
Knowledge of manual design methodologies of combinational and sequential digital systems, at both logic and RT abstraction level.
Prerequisites / Assumed knowledge
Students are assumed to be familiar with the fundamental concepts of:
Algebras, as presented, for instance, in:
− F.M. Brown: "Boolean reasoning: the logic of boolean equations," Kluwer Academic Publisher, Boston MA (USA), 1990, (chapter 1, pp. 1-21)
Number systems and codes, as presented, for instance, in:
− E.J.McCluskey: "Logic design principles with emphasis on testable semicustom circuits equations," Prentice-Hall, Englewood Cliffs, NJ, USA, 1986, (chapter 1, pp. 1-28)
− J. P. Hayes: "Introduction to Digital Logic Design," Addison Wesley, Reading, MA (USA), 1994, (chapter 2, pp. 51-123)
− M. Mezzalama, N. Montefusco, P. Prinetto: "Aritmetica degli elaboratori e codifica dell'informazione", UTET, Torino (Italy), 1989 (in Italian), (chapter 1, pp. 1-38).
Basic concepts of C programming language:
− Control structures
− Basic data types and operators
− The program life-cycle
as presented, for instance, in:
− B.W. Kernighan, D.M. Ritchie: The C Programming Language Prentice Hall (pp. 1-57)
− P.Deitel, H.Deitel: C : How to Program, Prentice Hall, 2009
Introduction and basic concepts (0.5 ECTS credits)
o Course presentation
o Technology trends
o Boolean Algebras
o Digital System modeling
o Digital System clustering and taxonomy
Object Oriented Programming in C++ (5 ECTS credits):
o Introduction to Object Oriented Programming
o Introduction to C++
o Classes in C++
o Control Structures
o Functions and Streams
o Pointers and dynamic memory
o Abstract Data Types
o Sorting algorithms
o Trees and Graphs
Digital systems manual synthesis (2.5 ECTS credits):
o The Design process
o Basic building blocks at logic and RT levels
o Different design methodologies
o Validation & Verification
o Combinational and sequential manual design at logic and RT abstraction levels
Computer architectures (2.0 ECTS credits):
o Digital systems basic components
o Processor architectures
o Introduction to Assembler languages
o Interconnection systems and protocols
o Memory systems
o Exceptions and interrupts handling systems
o Introduction to Operating Systems.
The course is structured in two concurrent sub-courses:
Design & Architecture.
Each sub-courses accounts for 5 ECTS credits and has its own exam.
As far as the Programming sub-course is concerned, laboratory sessions of 1.5 hours are held every week. No report about the laboratory activities is required, but attending Labs allows students to check their level of understanding and helps them to practically apply the learned concepts.
Students are warmly encouraged to download and install a program development tool for C++ on their PCs. Among the free tool, we warmly suggest:
Code::Blocks, Release 10.05 - The open source, cross platform, free C++ IDE (http://www.codeblocks.org/)
As far as the Design & Architecture sub-course is concerned, during the lectures, several exercises on digital systems manual design will be proposed and properly solved.
Texts, readings, handouts and other learning resources
All the teaching material is made available, in advance, via the Course official homepage on the University Teaching portal.
All the lectures will be recorded and made available via the Poli@Home Service.
As far as the Design & Architecture sub-course is concerned, additional material is available at:
> Teaching > Teaching Tracks
From it, students can freely download:
Audio recording of the lecture (in English)
Texts and solutions of a lot of design exercises.
Concerning the computer architecture part, the following textbook is used:
G. Conte, A. Mazzeo, N. Mazzocca, P. Prinetto:
"Architettura dei calcolatori",
Cittΰ Studi, 2015 (in Italian)
News related to the course and the detailed weekly schedule are posted both on the official Course homepage, on the University Teaching portal, and on a Facebook Group: Algoritmi e Calcolatori 2017.
Assessment and grading criteria
Exam includes two independent parts, one for each sub-course, the final score being the average of the scores got in each part.
For the Programming sub-course, the exam consists in submitting a C++ program capable of solving a problem proposed during the course.
Students are asked to deliver, at their best convenience, the source and the executable code, and a brief report.
For the Design & Architecture sub-course, the exam consists in a written final test (2 hours) in which students are requested:
To solve two or more exercises related to digital system design
To answer two or more questions related to the architectural aspects.
It worth noticing that:
all the exercises available on the above mentioned website have been part of previous exams
the questions available in the sections "Test di autovalutazione" of the proposed textbook are potential questions of the final written exam.
Programma definitivo per l'A.A.2016/17