CIS 272 - Intro to Computing Systems Credits 4
Lecture
Requirements: Corequisite: CIS 190, MTH 181
Introduction to major components of computer system software. The course introduces fundamental concepts of computing systems, such as binary arithmetic and data representation, the Von Neumann model for processing computer programs, the operation of memory, instruction set, and machine and assembly language programming. It systematically presents the levels of transformations from machine language to assembly language to high level language. The role of such systems software components as assemblers, compilers, linkers, loaders, and operating systems is studied. The course has a strong project component. Graded
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.
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.
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.
Computers are programmable electronic devices that can process data. To comprehend what a computer system is, it's important to analyze the history and evolution of computer system development over the years.
The history of computer systems goes way back to Charles Babbage's differential machines. Despite never being completed, this machine is considered the first example of a computing system. It came before the early 20th-century mainframes and large computers. The Von Neumann machine and others of its kind were later used as the first massive, monolithic computers in the human world.
The microprocessor revolution of the 1970s and 1980s saw the introduction of personal computers, also known as desktop computers. The first true home computer that came with a monitor display was released to the public in 1977. At the time, many large organizations used expensive and massive computers. The personal computer employed a computer box as its main piece of hardware, together with peripheral devices such as a mouse and keyboard and computer software that was downloaded into floppy disks.
The operating system was initially created to support a complete computer system in a box and to provide users with a common interface for using the software that operated on that hardware. Additionally, the actual software components to execute on a specific operating system, such as files, apps and executables, were also introduced. The first IBM PC, officially known as the IBM Model 5150, ran Microsoft's MS-DOS operating system and had an Intel 8088 processor running at 4.77 MHz.
The laptops emerged as hardware became smaller and more portable over time. The Portal, the first authorized portable microcomputer, debuted in 1980. It was built using an 8-bit, 2 MHz Intel 8085 processor and was equipped with a 64K byte random access memory (RAM).
The introduction of the modern cloud in the early 2000s revolutionized software distribution and data storage. The out-of-the-box software strategy was rendered obsolete in the enterprise IT sector as software was provided digitally through the internet in place of physical media, such as floppy disks and compact disks.
The concept of hardware and software configurations has recently undergone a radical change thanks to virtualization. Instead of using physical hardware, the majority of current computing systems use virtualized computer systems. Through the use of virtualization, a single computer's hardware resources can be split up into several virtual machines.
The hardware components include the computer itself; the physical parts inside the computer, such as a circuit board and storage devices; and any peripherals attached to the computer. These components can be either classified as input devices, such as a mouse or keyboard, or output devices, such as a monitor or a printer. While output devices reflect or display user data, input devices are designed to accept user data.
Software components are the set of instructions that are stored and run on the computer hardware. The software controls how a computer system works. It can be grouped into the following two categories:
Depending on the applications and performance requirements, numerous computer system types are utilized in various fields. Computers are typically divided into two groups based on their size and their capacity for handling data.
Desktop management, a part of systems management, is an all-inclusive strategy for controlling every computer in an organization. Learn how desktop management works and the various desktop management tools that are available.
Advanced programming language concepts for more complex, higher performance software design. Builds depth of programming skills in C++ as a foundation for upper-division courses and projects. Focuses on strengthening programming, debugging, and problem solving skills.
Introduction to the fundamental concepts of digital signal and image processing as applicable in areas such as multimedia, graphics, AI, data mining, databases, vision, or video games. Topics include image representation, space- and frequency-domain transformations, filters, segmentation, and compression.
Introduction to the fundamental principles of 3D computer graphics including polygonal modeling, geometric transformations, visibility algorithms, illumination models, texturing, and rasterization. Use of an independently-learned 3D graphics API to implement these techniques.
Introduction to the principles of interactive 2D and 3D computer game development. Concepts in computer graphics, algorithms, software engineering, art and graphics, music and sound, story analysis, and artificial intelligence are presented and are the basis for student work.
Projects in advanced 3D graphics such as illumination, geometric modeling, visualization, and animation. Topics include physically based and global illumination, solid modeling, curved surfaces, multiresolution modeling, image-based rendering, basic concepts of animation, and scientific visualization.
Discrete event-driven simulation; continuous system simulation; basic probability as pertaining to input distributions and output analysis; stochastic and deterministic simulation; static and dynamic system simulation.
Introduces the problems of computer vision through the application of computational photography. Specific topics include photo-editing (image warping, compositing, hole filling), panoramic image stitching, and face detection for digital photographs.
Students undertake construction of a computer vision system. Topics include automatically building 3D models from photographs, searching photo collections, robot navigation, and human motion tracking.
Introduces virtual reality systems and software. Topics include computer graphics pipeline, human visual system and perception, head mounted displays, image formation, sensors and tracking, and 3D sound. Students use a popular cross-platform game engine to create VR environments.
Introduction to the design of databases and the use of database management systems (DBMS) for applications. Topics include entity-relationship modeling for design, relational data model, relational algebra, relational design theory, and Structured Query Language (SQL) programming.
Introduces students to advanced database technologies and web applications. Topics include database connectivity (ODBC/JDBC), extending databases using stored procedures, database administration, web servers, web programming languages (Java servlets, XML, Ajax, and mobile platforms).
Covers fundamental principles underlying data management systems. Content includes key techniques including storage management, buffer management, record-oriented file system, access methods, query optimization, and query processing.
Survey of modern data management and analysis technologies beyond relational (SQL) database management. Topics include semistructured data, NoSQL databases, big data analysis, and text search/query engines. Additional topics vary and may include data frames, streaming data, and/or time-series data.
Discusses concepts and techniques related to all aspects of search systems. After considering basic search technology and the state-of-art systems, rapidly developing techniques for multimedia search, local search, event-search, and video-on-demand are explored.
Parallel and distributed computer systems. Parallel programming models. Common parallel and distributed programming issues. Specific topics include parallel programming, performance models, coordination and synchronization, consistency and replication, transactions, fault tolerance.
c80f0f1006