Introduction to Computer Programming (CSCI-SHU 11)
An introduction to the fundamentals of computer programming. Students design, write, and debug computer programs. No prior knowledge of programming is assumed. Students will learn programming using Python, a general purpose, cross-platform programming language with a clear, readable syntax. Most class periods will be part lecture, part lab as we explore ideas and put them into practice. Prerequisite: None.
Data Structures (CSCI-SHU 210)
Use and implementation of fundamental programming constructs designed to solve challenging real-world problems. Along with the right algorithms, these constructs constitute building blocks which can be reused, extended, and combined in order to make powerful programs. By the end of this course, students will have acquired extensive knowledge of these concepts and will be familiar with their mechanics; they will be able to design and write computer programs that solve complex problems in a most efficient way. No prior experience of Java programming is expected (we will start the course with a quick hands-on introduction to Java), but this course requires some CS background and a good command of programming. Prerequisite: Introduction to Computer Science (CSCI-SHU 101).
Operating Systems (CSCI-SHU 215)
Operating systems offer an interface between user programs and the bare hardware of the computer on which they run. An operating system is responsible for allowing resources (e.g., disks, networks, and processors) to be shared, providing common services needed by many different programs (e.g. data exchanges, the ability to start or stop jobs, and access to external devices) while protecting individual programs from one another. This course presents the fundamental principles of operating systems, and discusses the tradeoffs between performance and functionality induced by the design and implementation of an operating system. It covers the following core topics: process management (processes, threads, CPU scheduling, synchronization, and deadlock), memory management (segmentation, paging, swapping), and inter-process communications (including file I/O and network sockets). This course requires a solid CS background, and some command of programming with the C language: in particular the use of pointers. Prerequisites: Data Structures (CSCI-SHU 210) and Computer Architecture (CENG-SHU 202).
Computer Science Senior Projects (CSCI-SHU 420)
The purpose of the Senior Project is for the students to apply theoretical knowledge acquired during the Computer Science program to a concrete project in a realistic setting. During the project, students engage in the entire process of solving a real-world computer science project. It requires students to pursue a long-term, mentored learning experience that culminates in a piece of original work. At the end of the semester, the proposed work comes to fruition in the form of a working software prototype, a written technical report, and an oral presentation at a capstone project symposium.