Computer Science Courses

The links below will take you to the catalog description for the course you have selected. If you would prefer to view a complete description of the course, including course objectives, major topics covered, labs, etc., please see the detailed course descriptions (i.e., the "Yellow Book") by following the appropriate links below.

View the course matrices for SCS Majors:

Computer Science Matrix

Required Courses

Restricted Electives

SCS majors must take at least one of the following courses:

Unrestricted Electives

In addition to selecting one restricted elective, SCS majors must take at least two other electives from the following list:

Elective courses will be offered based on the preregistration enrollments. Students should expect that not all the courses listed will actually be offered (due to small enrollments). Those students will be expected to select an alternate choice if the course is dropped.

Core Courses ( Required for all freshmen )

Service Courses ( Intended for non-majors )

SI204, SI221, SI250, and SI283 may not be used to satisfy a CS major elective requirement. However, SI250 may be used as a "free elective". Also, SI204 can count for IC210.

Course Descriptions

IC210 Intro to Computer Science (3-2-4). Introduction to algorithmic development, problem solving and software design. Principles and concepts to provide foundational knowledge and experience upon which later computing courses will build. This is the first course for computer science and information technology majors. Prereq: None. [fall]

Students will:

[Back]

IC211 Object-Oriented Programming (2-2-3). This course builds on the procedural programming skills developed in the prerequisite course and introduces the student to object oriented programming and design principles using Java. Object oriented topics such as classes, inheritance, information hiding, polymorphism and dynamic binding are presented and used to create robust, reusable, and maintainable software. The fundamentals of Java are presented along with exception handling, I/O, event driven programming, simple GUIs and generics. Prereq: IC210 or SI204. [spring]

Students will: [Back]

IC220 Computer Architecture and Organization (3-0-3). This course introduces students to performance metrics, instruction set architectures, assembly language, logic design, memory hierarchies, and pipelining. Prereq: IC210 or SI204 [spring]

Students will: [Back]

IC221 Systems Programming (2-2-3). The study of an application's interface with the operating system. The operating system is treated as an information resource, and as a facilitator for information flow between processes, including those executing on separate machines. Topics include: process management, multiprogramming, and the basic concepts necessary to understand the design and operation of computer communication networks. Prereq: IC210 or SI204, Coreq: IC220. [spring]

Students will: [Back]

IC312 Data Structures (3-0-3). This course examines abstract data types (ADT), data structures, data representation and information management including storage structures, allocation and collection. ADTs and data structures presented include lists, stacks, queues, trees, heaps, priority queues, maps, dictionaries and graphs. Sorting and searching techniques, hashing and graph algorithm analysis are also covered. Prereq: IC211, Coreq: SM242 [fall]

Students will: [Back]

IC322 Computer Networks (2-2-3). The course presents the fundamental theoretical concepts, characteristics and principles of computer communications and computer networks, and analyzes and assesses these foundational concepts with respect to network performance and network design. Prereq: IC221, Coreq: SM242. [fall]

Students will: [Back]

SI340 Theory of Computing (3-0-3). This course presents the theoretical foundations for computing, including the study of formal languages, finite state machines, pushdown automata, Turing machines and computability. Prereq: IC210 or SI204, Coreq: SM242. [fall]

Students will: [Back]

SI335 Computer Algorithms (3-0-3). Presents techniques for designing and analyzing computer algorithms including divide and conquer, dynamic programming and greedy methods. Introduces classic algorithms for problems such as searching and sorting, graph analysis, file compression and cryptology. Prereq: IC312, SI340. [spring]

Students will: [Back]

SI413 Programming Languages and Implementation (2-2-3). This course examines basic concepts underlying the design of modern programming languages: types, control structures, abstraction mechanisms, inheritance, concurrency and constructs for programming. This course will include programming assignments in several languages. Prereq: IC312, SI340. [fall]

Students will: [Back]

IC470 Software Engineering (2-2-3). An introduction to the basic principles of software engineering. Structured, object-oriented, and formal approaches are studied, with emphasis on life cycles, object-oriented techniques and team-oriented software development. Prereq: IC312. [spring]

Students will: [Back]

IC480 Research Seminar/Capstone (1-4-3). This is a capstone course that ties together concepts from the information technology and computer science curricula to solve a practical problem. These team-oriented project solutions will include the requirements gathering, analysis, design and development of a computing system involving a large, multi-layer organization using appropriate information management and computing technologies. Prereq: IC470. [spring]

Students will: [Back]

SI411 Operating Systems (3-0-3). The study of the operating system as a resource manager. Topics include process management, interrupt processing, memory management, deadlock handling, file systems, multiprogramming, multiprocessing, data security and protection. Prereq: IC221, IC312. [fall, spring]

Students will: [Back]

SI420 Artificial Intelligence (3-0-3). A study of the fundamental concepts and techniques in the design and implementation of functionally intelligent machines. Topics include problem-solving using state-space search, problem-reduction techniques, game trees, general problem solver; and knowledge representation using production systems, first-order predicate calculus and natural language. Prereq: IC312. [fall, spring]

Students will: [Back]

SI435 Advanced Software Engineering (2-2-3). This course presents the latest trends in modern techniques and methods for large scale software development activities, such as object oriented programming. The use of CASE tools and group design project is stressed. Prereq: IC470. [spring]

Students will: [Back]

SI440 Database Systems (3-0-3). Topics include database systems architecture, the various approaches to database organization including relational, hierarchical and network models; normalization and implementation issues. Note: students MAY take both IT360 and SI440 for credit. Prereq: IC312. [fall, spring]

Students will: [Back]

SI455 Advanced Computer Networks (3-0-3). This course provides an in-depth technical study of high-speed networking, client-server programming and applications, network firewall architectures and security procedures, and the ATM network. Prereq: IC322. [spring]

Students will: [Back]

SI460 Computer Graphics (2-2-3). A project-based course involving basic concepts, theories and algorithms associated with producing 2D and 3D images on a raster display. Topics include graphics primitives, modeling, viewing, illumination, shading, texture, and event-driven programming using a graphics API. Prereq: IC312. [fall]

Students will: [Back]

SI462 Advanced Computer Graphics (2-2-3). A project-based course involving advanced graphics techniques such as ray-tracing, radiosity, volume rendering, virtual and augmented reality, haptics, and pixel shaders. Prereq: SI460. [spring]

Students will: [Back]

SI475 Intelligent Robotics (2-2-3). Presents the concepts and theories related to computer-driven robotic systems and computer-based vision systems. Students apply acquired knowledge in a laboratory setting be designing, coding, and testing robotics control and vision systems. Prereq: IC312. [spring]

Students will: [Back]

SI110 Introduction to Cyber Security Technical Foundations (2-2-3). Introduction to Cyber Security is a hands-on lab-based course providing a technically focused introduction to the principles behind the use, function, and operation of computers, networks, and applications with an emphasis on cyber security. [Fall,Spring]

SI204 Introduction to Computer Science (3-2-4). Introduction to algorithmic development, problem solving and software design. Principles and concepts to provide foundational knowledge and experience upon which later computer science courses will build.

SI221 Data Structures (3-0-3). Data representation and information management. Lists, strings, arrays, and trees. Storage structures, allocation and collection. Sorting techniques, hashing and searching.

SI200 Information Systems for the Junior Officer (2-2-3). The primary emphasis of the course is practical applications of personal computers and the Internet in the Fleet/Fleet Marine Force (FMF), with coverage of some special tactical computers as well. Application software is addressed from a junior officer's viewpoint, as an operational unit Branch/Division/Company Officer or as a support staff member.

[Back]