Learning objectives
The purpose of the course is to introduce the fundamentals of computer science, describing how computer works, and illustrating last generation software applications, in particular Internet-oriented ones.
Course unit content
Fundamentals of computer science: information, high-level description of a computer; computer science, models, abstraction layers.
Computing: numeral systems, binary representation of numbers, text, images, sounds; boolean algebra.
Computers: logical layer, RTL layer, cpu; stack, interrupt, Assembly instruction set, CISC vs RISC, memory hierarchies; mass memories, I/O system.
Distributed systems and Internet: Enslow taxonomy, LAN networks, WAN networks, Internet; TCP/IP stack; information systems, fundamentals of databases; Web applications: from search engines to social networks.
Algorithms and data structures: definition of algorithm, pseudocode, flowcharts; data structures; design techniques for algorithms; sorting algorithms.
Programming: programming languages; structured programming; object-oriented programming.
Software engineering: software quality, software lifecycle, UML.
Bibliography
G. M. Schneider, J. L. Gersting, “Informatica”, Ed. Apogeo, 2007.