The purpose of this course is to provide an understanding of issues in the design and implementation of embedded systems as well as related operating system and virtualization support. Topics include:
Communication and peripherals: interrupt controllers, LCDs, sound, serial interfaces, busses
Interrupts and interrupt handling
NAND FLASH and memory technologies
Concurrency, real-time characteristics
Operating systems support
Kernel drivers, memory management, network and storage I/O in the kernel
System virtualization: processor, memory, I/O
CS428 is a lab-oriented course with hands-on assignments that guide you through working with embedded processors and the Linux operating system. You will prototype working solutions in real systems and you will go through the steps of real system design and implementation. This year we will use the Lego NXT & Arduino platforms, as well as QEMU and ARM-based, Linux-capable boards for the assignments. The course will also include in-class sessions with low-level operating systems tweaking, driver development, and virtualization mechanisms using Linux.
Learning Outcomes:
1. Knowledge:
Communication and peripherals: interrupt controllers, LCDs, sound, serial interfaces, busses
Interrupts and interrupt handling
NAND FLASH and memory technologies
Concurrency, real-time characteristics
Operating systems support
Kernel drivers, memory management, network and storage I/O in the kernel
System virtualization: processor, memory, I/O
2. Understanding:
How embedded systems and their peripherals work.
How to design, develop, and debug programs for embedded systems.
3. Application:
How to design (embedded systems) programs that interact directly with the underlying system (without an extensive runtime system).
4. Analysis:
How to choose the appropriate approach for designing the software stack in a new embedded system.
5. Synthesis:
Designing and implementing complex systems that involve systems software components.
6. Evaluation:
The cost and benefits of different approaches for designing embedded systems software components.
Student Performance Evaluation
Specific details on grading can be found on the course’ s website
The courses of the Computer Science Department are designated with the letters "CS" followed by three decimal digits. The first digit denotes the year of study during which students are expected to enroll in the course; the second digit denotes the area of computer science to which the course belongs.
First Digit
Advised Year of Enrollment
1,2,3,4
First, Second, Third and Fourth year
5,6
Graduate courses
7,8,9
Specialized topics
Second Digit
Computer Science Area
0
Introductory - General
1
Background (Mathematics, Physics)
2
Hardware Systems
3
Networks and Telecommunication
4,5
Software Systems
6
Information Systems
7
Computer Vision and Robotics
8
Algorithms and Theory of Computation
9
Special Projects
The following pages contain tables (one for each course category) summarizing courses offered by the undergraduate studies program of the Computer Science Department at the University of Crete. Courses with code-names beginning with "MATH" or "PHYS" are taught by the Mathematics Department and Physics Department respectively at the University of Crete.