Systems I: Programming Abstractions

Similar documents
DEPARTMENT OF COMPUTER SCIENCE

School of Computing and Information Sciences. Course Title: Data Structures Date: 3/30/2010 Course Number: COP 3530 Number of Credits: 3

«Computer Science» Requirements for applicants by Innopolis University

CSC 2405: Computer Systems II

CS 445: Data Structures Final Examination: Study Guide

Software Development Fundamentals (SDF)

CIS 1.5 Course Objectives. a. Understand the concept of a program (i.e., a computer following a series of instructions)

Institute of Engineering & Management. Course:CS603- Operating System. Course pre-requisites

Computer Science (CS)

Process Concepts. CSC400 - Operating Systems. 3. Process Concepts. J. Sumey

Dealing with Issues for Interprocess Communication

DIABLO VALLEY COLLEGE CATALOG

School of Computing and Information Sciences

COMPUTER SCIENCE/INFORMATION SYSTEMS DEGREE PLAN

CCCCS meeting October 31, Transferring Courses and Students

Here to take you beyond. ECEP Course syllabus. Emertxe Information Technologies ECEP course syllabus

MSc(IT) Program. MSc(IT) Program Educational Objectives (PEO):

Lecture 12 Summary. Goals

INFORMATION TECHNOLOGY COURSE OBJECTIVE AND OUTCOME

Lecture 12 Summary. Main topics What use is this for? What next? Next Courses? Next topics? Teemu Kerola, Copyright 2010

CSE 410: Systems Programming

An Overview of the BLITZ System

Student Name:.. Student ID... Course Code: CSC 227 Course Title: Semester: Fall Exercises Cover Sheet:

ADMINISTRATIVE MANAGEMENT COLLEGE

COMPUTER SCIENCE, BACHELOR OF SCIENCE (B.S.)

Process Description and Control

CS2013 Course Syllabus Spring 2017 Lecture: Friday 8:00 A.M. 9:40 A.M. Lab: Friday 9:40 A.M. 12:00 Noon

Processes. CS 416: Operating Systems Design, Spring 2011 Department of Computer Science Rutgers University

Introduction to Concurrency (Processes, Threads, Interrupts, etc.)

Threads and Too Much Milk! CS439: Principles of Computer Systems February 6, 2019

Operating System. Operating System Overview. Structure of a Computer System. Structure of a Computer System. Structure of a Computer System

Introduction to Operating Systems Prof. Chester Rebeiro Department of Computer Science and Engineering Indian Institute of Technology, Madras

COMP 250. Lecture 36 MISC. - beyond COMP final exam comments

Agenda. Threads. Single and Multi-threaded Processes. What is Thread. CSCI 444/544 Operating Systems Fall 2008

CSC 4320 Test 1 Spring 2017

Part V. Process Management. Sadeghi, Cubaleska RUB Course Operating System Security Memory Management and Protection

Introduction to Computer Systems

CS 261 Fall Mike Lam, Professor. Virtual Memory

Main Points of the Computer Organization and System Software Module

REVIEW OF COMMONLY USED DATA STRUCTURES IN OS

COURSE: DATA STRUCTURES USING C & C++ CODE: 05BMCAR17161 CREDITS: 05

CS 475. Process = Address space + one thread of control Concurrent program = multiple threads of control

Disruptor Using High Performance, Low Latency Technology in the CERN Control System

Operating Systems. Review ENCE 360

CS 856 Latency in Communication Systems

Big Java Late Objects

Abstract Data Structures IB Computer Science. Content developed by Dartford Grammar School Computer Science Department

ELEC 377 Operating Systems. Week 1 Class 2

Introduction to Operating Systems. Jin-Soo Kim Computer Systems Laboratory Sungkyunkwan University

Running on the Bare Metal with GeekOS

SAMPLE CURRICULUM GUIDE June 2014

CPS 210: Operating Systems

Announcements. Last modified: Thu Nov 29 16:15: CS61B: Lecture #40 1

Threads and Too Much Milk! CS439: Principles of Computer Systems January 31, 2018

CS2013 Course Syllabus Spring 2018 Lecture: Mon/Wed 2:00 P.M. 2:50 P.M. SH C259 Lab: Mon/Wed 2:50 P.M. 4:00 P.M. SH C259

CSE 333 Lecture 1 - Systems programming

High Performance Computing Lecture 21. Matthew Jacob Indian Institute of Science

OPERATING SYSTEMS. G.C.E. Advanced Level ICT

Chapter 3: Processes. Operating System Concepts 8 th Edition,

Department Curriculum and Assessment Outline

Questions answered in this lecture: CS 537 Lecture 19 Threads and Cooperation. What s in a process? Organizing a Process

Algorithms: Design & Practice

Chapter 4: Threads. Operating System Concepts 9 th Edit9on

Syllabus for Computer Science General Part I

Ph.D. Written Examination Syllabus

MARUTHI SCHOOL OF BANKING (MSB)

The Concurrency Viewpoint

THE PROCESS ABSTRACTION. CS124 Operating Systems Winter , Lecture 7

* What are the different states for a task in an OS?

University of Waterloo Undergraduate Catalog Report Faculty of Mathematics Page No. 1 Run Date 20-AUG-2007 Meeting Number(s) 25

Concept of a process

CS193j Programming in Java

Announcement. Exercise #2 will be out today. Due date is next Monday

Process. Program Vs. process. During execution, the process may be in one of the following states

Ph.D. Written Examination Syllabus

COMPUTER SCIENCE, BACHELOR OF SCIENCE (B.S.) WITH A CONCENTRATION IN CYBERSECURITY

CS 61: Systems programming and machine organization. Prof. Stephen Chong November 15, 2010

Curriculum 2013 Knowledge Units Pertaining to PDC

CS370 Operating Systems Midterm Review

Threads. CS-3013 Operating Systems Hugh C. Lauer. CS-3013, C-Term 2012 Threads 1

Introduction p. 1 Pseudocode p. 2 Algorithm Header p. 2 Purpose, Conditions, and Return p. 3 Statement Numbers p. 4 Variables p. 4 Algorithm Analysis

AP Computer Science AB

Syllabi of the Comprehensive Examination in Computer Science

CS2102, B11 Exam 1. Name:

Textbook Charles Petzold, Programming Windows, 5th edition, Microsoft Press. References - other textbooks or materials none

Windows 7 Overview. Windows 7. Objectives. The History of Windows. CS140M Fall Lake 1

Introduction to Computer Systems

Experience with Processes and Monitors in Mesa. Arvind Krishnamurthy

Introduction to Computer Systems

Advanced Operating Systems (CS 202)

CSE 4/521 Introduction to Operating Systems. Lecture 29 Windows 7 (History, Design Principles, System Components, Programmer Interface) Summer 2018

Chapter 4: Threads. Chapter 4: Threads. Overview Multicore Programming Multithreading Models Thread Libraries Implicit Threading Threading Issues

CS 525 Advanced Database Organization - Spring 2017 Mon + Wed 1:50-3:05 PM, Room: Stuart Building 111

Computer Systems A Programmer s Perspective 1 (Beta Draft)

EECS 482 Introduction to Operating Systems

Notes on the Exam. Question 1. Today. Comp 104:Operating Systems Concepts 11/05/2015. Revision Lectures (separate questions and answers)

COMPUTER SCIENCE (CSCI)

Descriptions for CIS Classes (Fall 2017)

Inter-Process Communication and Synchronization of Processes, Threads and Tasks: Lesson-1: PROCESS

CompuScholar, Inc. Alignment to Nevada "Computer Science" Course Standards

Transcription:

Systems I: Programming Abstractions Course Philosophy: The goal of this course is to help students become facile with foundational concepts in programming, including experience with algorithmic problem solving and problem decomposition while developing good software engineering skills. The use of recursion is also introduced and emphasized as an important programming technique in a variety of contexts. Additionally, students learn about data abstraction through the implementation of various basic data structures (e.g., stacks, queues, linked lists, hash tables, and binary trees), analyzing their performance trade-offs, and understanding their use as generic containers. Potential sample programming assignments and topical coverage (The course will likely have 6-7 programming assignments. A few ideas for assignment possibilities are listed below.) Data manager to store information about students Programming methodology (engineering, modularity, documentation) Algorithmic thinking and problem solving Searching and sorting The game Boggle, including a computer player that finds words using recursive search Recursion Libraries and interfaces Priority queues (implementing various underlying structures, discussing trade-offs) Data abstractions and generics/templates Basic algorithm analysis (big-oh) and comparison Editor buffer (implemented using doubly-linked chunk lists) Queues Linked lists Basic algorithm analysis (big-oh) and comparison Huffman codes (construction of code trees, encoding, decoding) Binary trees Procedural recursion

General Topics Programming methodology (engineering, modularity, documentation) Algorithmic thinking and problem solving Data abstractions Stacks Queues Linked lists Hash tables Binary trees Generics/templates Recursion Procedural recursion Recursive backtracking Searching and sorting Basic algorithm analysis (big-oh) and comparison Potential instructors: Julie Zelenski and Mehran Sahami Notes: This course is a classic CS2 course covering algorithmic problem solving, fundamental data structures, and recursion. This course is our current CS106B/X course, which will continue in its current form. We have discussed the notion of potentially changing the language in this course from C++ to Java at some point in the future. For the time being, the current format of the class is quite workable for the Systems Core.

Systems II: Computer Organization and Systems Course Philosophy: The goal of this course is to cover computer systems from the hardware level (e.g., registers, ALUs, memory, etc.) up the source code level. This "hands-on" tour includes concepts such as hardware organization, memory models, and fundamentals of compilation. Programming projects are used extensively to give students working knowledge of the various levels of computer system abstraction and how the transformation from one level to another is performed (e.g., compiler code generation). The course will also stress development in C as a vehicle for working with these concepts. Potential sample assignments and topical coverage (The course will likely have 4-5 assignments. A few ideas for assignment possibilities are listed below.) Implementing a memory manager Pointers Low-level polymorphism and runtime type identification Data representation Heap management, garbage collection Facility with C programming as part of topical coverage Memory hierarchy probing/optimization (Optimizing a memory system using simulator, exploring issues such as access locality, prefetching, latency at various levels of memory hierarchy, etc.) Machine architecture (registers, RAM, I/O) Caching, pipelining Basic assembly language Implementing an intermediate code generator Compilation Function call mechanics and stack frames Semantic analysis Code generation Facility with C programming as part of topical coverage Implementing a concurrent queuing simulation Basic concurrency usage Threading Synchronization, locks and semaphores

General Topics Machine architecture Registers, ALU, CPU, RAM, I/O Caching, pipelining Basic assembly language Memory model Pointers Low-level polymorphism and runtime type identification Data representation Heap management, garbage collection Facility with C programming as part of topical coverage Compilation Function call mechanics and stack frames Semantic analysis Simple (intermediate) code generation Basic concurrency usage Threading Synchronization, locks and semaphores Potential instructors: Jerry Cain and Nick Parlante Notes: This course is a significantly modified version of our current CS107 course; material on programming paradigms (which had been reduced over time) is now eliminated from the course and replaced by more coverage of compilers and machine organization. An adjunct course (CS1U) may be introduced to provide students with facility in the UNIX operating system, which is the computing platform for most of the programming projects in this course.

Systems III: Principles of Computer Systems Course Philosophy: The goal of this course is to provide students with an understanding of the fundamental principles of computer systems (processes, file systems, concurrency) as well as elements of networking and distributed systems. The course aims to make students facile in leveraging the facilities of modern operating systems through rigorous programming projects involving multiple OS concepts. The course also has the dual goal of having students develop designs, abstractions, and appropriate modularity in the larger pieces of software they develop. Modern software engineering practices (e.g., source control, unit testing, etc.) are stressed in project development. Potential sample assignments and topical coverage (The course will likely have 2-3 large-scale assignments. possibilities are listed below.) A few ideas for assignment Implement a web server (e.g., Apache lite), including ability to run CGI programs Concurrent processes Sockets Modular design (URL handling, security, caching, etc.) Implement a networked file system Concurrent processes Networking Distributed systems Implement a basic C shell (including pipes and file system access) Process mechanics Forking and interprocess communication

General Topics Processes Concurrency mechanics on a single processor Context switching, interrupts and exceptions Forking processes Process mechanics and management Interprocess communication Threading Storage and file management Virtual memory Paging Networking Sockets Blocking vs. non-blocking strategies Transport layer: TCP/IP Network layer: names, routing Understanding of distributed systems Potential instructors: Mendel Rosenblum and Nick Parlante Notes: This course is an entirely new course that is not meant as a replacement for either CS140 or CS144/244. It is meant to provide a foundation in operating systems and networking concepts that we believe all undergraduates should be exposed to, and which can be further expanded in CS140 and CS144/244 for students specifically interested in implementing Systems. At a high level, this course is aimed at giving students experience with building larger software projects and developing their skills with modern software engineering in the context of working with systems principles. Students in the Systems Track will certainly be required to take subsequent courses that will focus on the implementation of a wide breadth of OS facilities at a low level (e.g., CS140, CS244A and beyond). For non-systems students (concentrations, for example, in theory, computational biology, HCI, etc.), the course offers as understanding of OS facilities through their usage in designing and building reasonably sized pieces of software. It also helps students further mature as software engineers, building general skills which will be useful to them in a wide variety of concentration areas.