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:
Class of 2009
and later |
Computer Science Matrix |
Required Courses
- IC210 Intro to Computing
(SI204 for class of 2009)
- IC211 Object-Oriented
Programming
- IC220 Computer Architecture
and Organization
- IC221 Systems Programming
- IC312 Data Structures
- IC322 Computer Networks
-
SI340 Theory of Computing
-
SI335 Computer Algorithms
-
SI336 Software Engineering
-
SI413 Programming Languages and
Implementation
-
IC480 Research
Seminar/Capstone
Restricted Electives
SCS majors must take at least one of the following courses:
-
SI411 Operating Systems
-
SI420 Artificial Intelligence
-
SI435 Advanced Software
Engineering
-
SI440 Database Organization
-
SI455 Advanced Computer Networks
-
SI460 Computer Graphics
-
SI475 Intelligent Robotics
Unrestricted Electives
In addition to selecting one restricted elective, SCS majors must take at least two other electives from the following list:
- Any restricted elective from the above list not already taken as a restricted eletive.
-
SI462 Advanced Computer Graphics
-
IT430 Information Assurance
and Network Security
-
IT432 Advanced Information Assurance and Network Security
-
IT452
Advanced Web and Internet Systems
-
IT460
Human Computer Interaction
-
IT462
Advanced Database Systems
-
IT470
Enterprise Computing
-
Any SI 485/486/495/496 course, as long as it is at least 3 credits.
-
Any IT 485/486/495/496 course, as long as it is at least 3 credits, and does not have the letter U,V, or W appended (e.g. IT485A is fine but IT485U is not).
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.
Service Courses (intended for non-majors)
- SI250 Information Systems for the Junior Officer
- SI283 Programming for Engineers
SI250 and SI283 may not be used to satisfy a CS major elective requirement.
However, SI250 may be used as a "free elective."
Course Descriptions
IC210 Intro to
Computing (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:
-
Solve problems
using the procedural programming paradigm;
-
Design, develop
source code for, debug, and document programs using
structured programming techniques in order to solve
problems. Supports Program Outcome (b);
-
Determine an
appropriate data structure (such as linked lists, arrays) to
be used in order to solve problems;
-
Understand the
legal issues and responsibilities of copyright law with
regard to information found on the Internet and its local
and global impact on individuals.
[Return to top]
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 fundaments of Java are presented
along with exception handling, I/O, event driven
programming, simple GUIs and generics. Prereq:
IC210 or SI204. [spring]
Students will:
-
Understand the fundamentals of
object oriented programming;
-
Compare and contrast the
differences between object oriented and procedural
programming;
-
Describe the solution to a
simple software requirement in terms of UML diagrams;
-
Given a problem specification,
apply the principles of encapsulation, inheritance,
polymorphism and information hiding to design and implement
a software solution using Java.
Supports Program
Outcome (c);
-
Demonstrate the appropriate use
of public, private and protected members of a class;
-
Be proficient in the use of an
off-the-shelf Integrated Development Environment (IDE) to
construct and debug a multi-class object oriented
application in Java;
-
Demonstrate the ability to
construct and run a Java program from the command line as
well as in an IDE;
-
Bring data into a program and
present results using command line, GUI and file I/O;
-
Design and construct a simple
GUI consisting of buttons and text fields using Swing;
-
Understand the
social issues and responsibilities of computer gaming with
regard to violence, graphic content and game addition and
its local and global impact on individuals.
[Return to top]
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:
-
Critically evaluate the
performance of computer systems;
-
Discuss modern trends and
challenges in computer system design;
-
Understand how assembly
language instructions are represented and executed by a
processor;
-
Write short, procedural
assembly language programs;
-
Specify and minimize digital
logic.
Supports Program
Outcome (c);
-
Describe how the datapath and
control work together in a processor to execute a program;
-
Describe the memory hierarchy
and be able to evaluate strategies for improving its
performance.
Supports Program
Outcome (a);
-
Understand the
ethical issues and responsibilities of fair use with regard
to hardware and software and its local and global impact on
organizations.
[Return to top]
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:
-
Understand the operation of the
Unix OS from the user, systems programmer, and application programmer
prospective;
-
Design software on Unix that
uses concurrency to solve problems;
-
Use a UNIX
command shell;
-
Navigate and
manipulate the UNIX filesystem from the command-line;
-
Build
application software using a make utility. Supports
Program Outcome (i);
-
Write simple
shell scripts and configure resource files. Supports
Program Outcome (i);
-
Understand the
security issues and responsibilities of a systems
administrator and the consequence of an insecure system and
its local and global impact on an individual and
organization.
[Return to top]
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:
-
Understand the fundamentals of
algorithm analysis (Big-O, Big-Θ, Big-Omega);
-
Possess an understanding of the
concept of abstraction and be able to describe the idea of
separation of implementation and interface;
-
Given a problem specification,
recognize and apply the canonical ADTs (Lists, Queues,
Stacks, Trees, Priority Queues, Dictionaries, and Graphs)
appropriate for solving the problem or designing a
computer-based system that meets the desired specifications.
Supports Program
Outcome (b);
-
Demonstrate the ability to
implement the canonical ADTs with: arrays, linked lists,
binary trees, hash tables, balanced trees, and other similar
structures.
Supports Program
Outcome (c);
-
Be proficient in defining and
coding recursive algorithms, including recognizing when
recursive solutions are appropriate;
-
Understand the
professional issues and responsibilities of a software
development and its local and global impact on an
organization.
[Return to top]
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:
- Employ the principles of analog and digital data
transmission, transmission media, coding techniques, and
physical communication limits to analyze and design modems
and signaling schemes;
- Evaluate the operation and performance of practical data
link protocols using the principles of framing, error
detection and correction, ARQ and multiple access control.
Supports
Program Outcome (a);
- Apply the principles of network layer design to the
analysis and evaluation of routing algorithms, congestion
control techniques, internetworking and addressing;
- Apply the concepts of addressing
and address resolution, connection establishment, reliable
transport, flow control and congestion control to install a
simple client-server network using multiple stations and
multiple media types.
Supports Program
Outcome (i);
- Understand the legal issues and
responsibilities of the trade off between the user's privacy
and the organization's ownership of the network and its
local and global impact on an organization.
[Return to top]
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:
-
Understand
the various models of computation, from both the formal
language and the corresponding machine model perspective;
-
Understand
some of the practical applications of these formal models of
computation and language;
-
Apply the
mathematical methods that let us describe computation and
language in order to understand formal algorithms.
Supports Program
Outcome (a).
[Return to top]
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:
-
Demonstrate an understanding of a variety of classic
standard algorithms;
-
Employ a
variety of standard techniques to devise efficient
algorithms on their own;
-
Compare
and analyze the performance of algorithms.
Supports Program
Outcome (CS-a);
-
Understand the ethical
issues and responsibilities of designing an algorithm that
would render modern encryption techniques useless and its
local and global impact on society.
[Return to top]
SI336 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:
-
Develop a
substantial team-oriented software application using the
major aspects of software development:
definition/requirements, analysis, planning, design,
implementation, testing and deployment.
Supports Program
Outcome (CS-b);
-
Understand
advanced concepts in O-O analysis, planning, design,
implementation, testing and deployment of software;
-
Collaborate in a team environment.
Supports Program
Outcome (d);
-
Demonstrate effective communication
orally and in writing.
Supports Program
Outcome (f);
-
Understand the social and
ethical issues and responsibilities of the Software
Engineering Code of Ethics and its local and global impact
on an organization and society.
[Return to top]
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:
-
Understand the evolution of programming languages;
-
Solve problems using a
functional programming language.
Supports Program
Outcome (a);
-
Comprehend the nature and structure of language;
-
Describe a variety of garbage collection strategies;
-
Describe how object-oriented languages implement
inheritance, polymorphism, encapsulation, and data-hiding;
-
Demonstrate the use of grammars and parsing;
-
Implement a simple interpreter.
Supports Program
Outcome (a);
-
Describe how static, just-in-time, and on-the-fly compilers
work;
-
Understand the security
issues and responsibilities of closed specifications versus
open specifications and its local and global impact on an
organization.
[Return to top]
IC480 Research
Seminar/Capstone (1-4-3).
This
is a capstone course that ties together concepts from the
information technology and computer science curriculums 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:
IT440. [spring]
Students will:
-
Apply
information technology and/or computer science to solve a
“real-world” problem;
-
Design and
develop a software-based system using current computing
technology; including but not limited to databases, web
delivery and networked systems.
Supports Program
Outcome (i);
-
Create and
maintain an effective project plan using “best practices”
from IT and CS;
-
Access,
manipulate and display data to aid in effective strategic
decision-making;
-
Identify
and evaluate emerging information technologies and their
impact on the global environment.
-
Collaborate in a team
environment.
Supports Program
Outcome (d);
-
Demonstrate effective communication
orally, in writing, and via multimedia.
Supports Program
Outcome (f);
-
Understand the professional issues and
responsibilities developing a software package for a client.
[Return to top]
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, IC332. [fall, spring]
Students will:
-
Understand the organization and architecture of computer
systems at the programming level of system description;
-
Be able
to solve problems in a multi-threaded programming
environment;
-
Analyze
and assess the computing environment foundational concepts
with respect to security from the perspective of the
operating system;
-
Evaluate contemporary legal, social, and ethical issues in
computing professions.
[Return to top]
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: SI335. [fall, spring]
Students will:
-
Apply
core concepts such as algorithm design and analysis to the
key problems and techniques in artificial intelligence;
-
Create
AI programs in a team;
-
Create
written documentation of AI programs, including both
technical details and user manuals;
-
Analyze
the social and ethical issues around standard AI ethical
topics, such as:
-
the
adoption of expert systems replacing human experts,
OR;
-
implications of super-human-level intelligence replacing
humans.
[Return to top]
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:
SI336. [spring]
Students will:
-
Develop a
substantial team-oriented software application using the
major aspects of software development:
definition/requirements, analysis, planning, design,
implementation, testing and deployment;
-
Understand advanced concepts in O-O analysis, planning,
design, implementation, testing and deployment of software;
-
Collaborate in a team environment;
-
Evaluate
ethical scenarios from the perspective of the Software
Engineering Code of Ethics.
[Return to top]
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. Prereq: IC312. [fall, spring]
Students will:
-
Query
relational databases using SQL;
-
Design,
and create relational databases to satisfy user
requirements;
-
Build
parts of a real database management system;
-
Explain
the main functionality provided by modern database
management systems: query optimization, concurrency control,
crash recovery;
-
Analyze
the ethical issues and responsibilities related to records
management.
[Return to top]
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:
-
Mathematically analyze the performance of computer networks,
and evaluate the performance and complexity of various
networking algorithms;
-
Design and
evaluate a network to successfully meet desired end-user
performance needs, in terms of communication delay, jitter,
throughput, cost and complexity, and evaluate the
limitations of current networking standards;
-
Understand
how to use mathematical and algorithmic principles to
balance the competing demands placed on the network—demands
such as high throughput, high reliability, high security,
fairness to all users, and ease of use—with each other and
with what is practically feasible;
-
Employ network programming concepts to design, implement
and test network application projects in a laboratory
setting;
-
Understand
the unique social, ethical and legal issues relevant to the
use of computer networks, particularly as they pertain to
security, privacy, computer crime and civil liberties.
[Return to top]
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:
-
Understand
various technologies that can be used for raster graphics
displays;
-
Design and
implement simple 2D and 3D interactive applications using a
graphics API;
-
Create graphics applications involving multiple source code
files and programming API;
-
Create
graphics software that meets a given set of requirements;
-
Demonstrate understanding of the event-driven programming
paradigm;
-
Convey an
understanding of some of the social or ethical issues
related to the use of computer-generated imagery in various
application domains;
-
Create non-trivial software requiring the contribution of
multiple programmers.
[Return to top]
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:
-
Implement
fundamental raster graphics algorithms such as rasterization,
clipping, projection and view transformation;
-
Understand
the limitations of various illumination models, will be able
to implement a global illumination model, and will be able
to use it to render a lighted, shaded 3D scene;
-
Create graphics applications involving multiple source code
files and programming API;
-
Create graphics software that meets a given set of
requirements;
-
Lead the class through a discussion of a seminal paper in
computer graphics;
-
Create non-trivial software requiring the contribution of
multiple programmers.
[Return to top]
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:
-
Understand
concepts and theories related to computer-driven robotics
systems and computer–based sensor systems;
-
Understand
how robotic devices use sensor information to learn about
their environment and how they apply AI techniques to this
information to plan and accomplish tasks;
-
Understand
how to process and analyze information provided by vision
systems;
-
Apply
acquired knowledge in a laboratory environment by designing,
coding and debugging robotics control programs using a
variety of robotics platforms and sensors;
-
Evaluate
the impact on human society that would be made by
intelligent robots.
[Return to top]
SI250 Information Systems for the Junior Officer.
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.
SI283 Programming for Engineers.
An introduction to a structured programming language and its
use in implementing algorithms to solve engineering problems.
|