Course Descriptions

Course Information
Computer Science (SI,IC), Data Science (SD) and Information Technology (IC,IT) Course Information

Course:IT470
Title:ENTERPRISE COMPUTING
Credits: 2—2—3
Description:This course develops architectures and concepts for the development of multi-tier (typically 3 tiered) distributed applications for an entire organization or enterprise. This includes a user interface called the client tier or tier 1, a server component which is controlled by the organization and provides for interaction with and data collection from the user (tier 2) and a database component that stores transactions and updates client profiles (tier 3). The course teaches advanced techniques for network programming as well as server management and programming. [fall, spring]
Requisites:Prereq: (IC322 or IT340) and (IT360 or IT420).
Course:SD211
Title:DATA SCIENCE & PROGRAMMING I
Credits: 3—2—4
Description:Introduction to computer programming for the purpose of implementing solutions relating to data acquisition, storage, processing, analysis, and visualization. The concepts provide foundational knowledge and experience upon which later data science courses will build. This is the first course for data science majors. Credit will not be given for both SD211 and any of: SY201, SI268.
Requisites:
Course:SD212
Title:DATA SCIENCE & PROGRAMMING II
Credits: 3—2—4
Description:This course builds on the programming skills developed in the prerequisite course and moves the focus towards a wider software ecosystem in order to solve more complex data science tasks. Students will learn and apply foundational principles of program organization including classes and objects, interfaces, inheritance, abstraction, and decoupling. In addition, important command-line skills will be developed for data gathering and cleaning, as well as library and software acquisition and use. These principles will be utilized through high-level programming in Python to analyze and manipulate real-world data sets.
Requisites:Prereq: SD211
Course:SD311
Title:DATA STRUCTURES & SCALABILITY
Credits: 3—0—3
Description:This course is an examination of computational efficiency in representing and computing with large data sets. Students will become familiar with the use and performance characteristics of common data structures including stacks, queues, lists, trees, heaps, and hash tables. The techniques of asymptotic analysis using big-O notation will be introduced as a formal tool to understanding how computer programs scale in resource use for increasingly large inputs. A strong emphasis will be placed on developing the ability to choose the most appropriate data structures for a given computational task, and to roughly estimate the asymptotic complexity of programs with loops and nested function calls. Credit will not be given for SD311 and any of: SY301 and IC312.
Requisites:Prereq: SD212
Course:SD312
Title:MACHINE LEARNING
Credits: 2—2—3
Description:This course is intended to take the student beyond linear regression and classification models as taught in SM317. Subjects include learning theory, unsupervised learning, recommendation systems, reinforcement learning, and neural networks. Credit will not be given for both SD312 and SI470.
Requisites:Prereq: SM263, SM317, SD311 or SI312
Course:SD321
Title:DATA STORAGE
Credits: 2—2—3
Description:This course provides students with an introduction to data storage methods and systems. Topics include hardware and software used to efficiently store large datasets, relational databases and data models, SQL, and applications that interact with databases.
Requisites:Prereq: SD212 Coreq: SD311 or permission of the Dept Chair
Course:SD322
Title:HUMAN DATA INTERACTION
Credits: 2—2—3
Description:Studies the intersection of people and data. This course covers technical concepts relating to how humans interact with data interfaces and visualizations, as well as ethical questions of how humans interpret, present, and ultimately deploy data science tools.
Requisites:Prereq: SD311
Course:SD411
Title:BIG DATA COMPUTING
Credits: 2—2—3
Description:This course focuses on processing large datasets in a distributed environment, including cloud systems and High Performance Computer Centers. Topics include NoSQL systems, MapReduce, cloud architecture, and distributed frameworks. Students will gain familiarity using DoD cloud computing resources.
Requisites:Prereq: SD321 or permission of Dept Chair.
Course:SD475
Title:DATA SCIENCE CAPSTONE
Credits: 2—2—3
Description:This is a capstone course that ties together concepts from the Data Science curriculum to solve a practical problem.
Requisites:
Course:SI200
Title:INFORMATION TECH FOR THE JO
Credits: 3—2—4
Description:This is a hands-on lab course introducing computer programming and database management. Topics include: web programming using HTML and XHTML, structured and object oriented computer programming using a scripting language (such as JavaScript) or 4th Generation Language (such as Java or C++), and designing, implementing, and querying databases using a Database Management System (such as Access or SQL Server). The course includes a series of Internet computing and programming projects of increasing complexity. No prior knowledge of databases, web programming, or computer programming is assumed. Students may not receive credit for this course and SI250. It may not count as a SCS major elective and IT majors cannot take this course. [fall]
Requisites:Prereq: None.
Course:SI204
Title:INTRO TO COMPUTER SCIENCE
Credits: 3—2—4
Description: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. [spring]
Requisites:Prereq: None.
Course:SI210
Title:INTRO TO COMPUTING
Credits: 3—2—4
Description: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. [fall]
Requisites:
Course:SI211
Title:OBJECT ORIENTED PROGRAMMING
Credits: 2—2—3
Description: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. [spring]
Requisites:SI210, SI204, or SY204
Course:SI220
Title:COMPUTER ARCHITECTURE & ORG
Credits: 3—0—3
Description:This course introduces students to performance metrics, instruction set architectures, assembly language, logic design, memory hierarchies, and pipelining. [spring]
Requisites:SI210 or SI204
Course:SI221
Title:DATA STRUCTURES
Credits: 2—2—3
Description:Data representation and information management. Dynamic memory, recursion, lists, stacks and queues. Storage structures, allocation and manipulation. [spring]
Requisites:Prereq: SI204.
Course:SI242
Title:DISCRETE STRUCTURES FOR COMPUTING
Credits: 2—2—3
Description:An introduction to mathematical tools and concepts necessary for designing and understanding computer software and systems: truth tables, propositional and predicate logic, basic number theory, proof techniques, sequences, induction, recurrences, and basic linear algebra. Labs will involve hands-on activities to demonstrate, test, and explore the mathematical topics of the class through computer tools such as SAT solvers, modular arithmetic libraries, and recursive programs. Cannot receive credit for SI242 and (SM242 or SM342).
Requisites:Prereq: SM122 or SM162. Coreq: IC210 or SI204.
Course:SI266
Title:SYSTEMS PROGRAMMING
Credits: 2—2—3
Description: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. [spring]
Requisites:Prereq: (IC210 or SI204 or permission of department chair); Coreq: IC220.
Course:SI268
Title:PROGRAMMING FOR EVERYONE
Credits: 2—2—3
Description:This hands-on course introduces computer programming to a general audience using Python. Students will learn basic programming skills they will be able to apply to a variety of disciplines, including social sciences, humanities, science, and engineering. Credit will not be given for SI268 and SY201 or SA233. No credit for SCS or SDS majors.
Requisites:
Course:SI312
Title:DATA STRUCTURES
Credits: 3—0—3
Description: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. [fall]
Requisites:SI242 and SI211, or Dept Chair approval
Course:SI322
Title:COMPUTER NETWORKS
Credits: 2—2—3
Description: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. [fall]
Requisites:SI266 or SY204
Course:SI335
Title:COMPUTER ALGORITHMS
Credits: 3—0—3
Description: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. [spring]
Requisites:Prereq: (SI340 or SI342) and (IC312 or SY301).
Course:SI340
Title:THEORY OF COMPUTING
Credits: 3—0—3
Description:This course presents the theoretical foundations for computing, including the study of formal languages, finite state machines, pushdown automata, Turing machines and computability. [fall]
Requisites:Prereq: IC210, SI204, or SY201; Coreq: SM242 (or equivalent).
Course:SI342
Title:THEORY OF COMPUTING
Credits: 4—0—4
Description:This course presents the theoretical foundations for computing, including basic set theory, predicate logic, formal languages, finite state machines, pushdown automata, Turing machines and computability. Cannot receive credit for both SI342 and SI340.
Requisites:Prereq: IC210 or SI204. Coreq: SI242.
Course:SI350
Title:WEB & INTERNET PROGRAMMING
Credits: 2—2—3
Description:This course introduces web-based application development. Topics include client-side development with HTLP, CSS, and JavaScript, server-side web development, website design, client-server model of the Internet, and web transmission protocols.
Requisites:
Course:SI411
Title:OPERATING SYSTEMS
Credits: 3—0—3
Description: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.
Requisites:(SI220 or SY303), (SI266 or SY204), and (SI312 or SY301)
Course:SI413
Title:PROGRAMMING LANGUAGES
Credits: 2—2—3
Description: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. [fall]
Requisites:Prereq: (SI340 or SI342) and (IC312 or SY301).
Course:SI420
Title:ARTIFICIAL INTELLIGENCE
Credits: 3—0—3
Description: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, game trees, state and plan space planning, and machine learning. [fall, spring]
Requisites:Prereq: IC312 or instructor approval.
Course:SI425
Title:NATURAL LANGUAGE PROCESSING
Credits: 2—2—3
Description:This course introduces students to Natural Language Processing, a subfield of Artificial Intelligence that studies how computers can understand human languages. This course covers algorithms to learn and interpret languages like English. It is a hands-on lab course covering topics like author identification, language modeling, information retrieval from huge datasets, email filtering, syntactic parsing, and sentiment analysis.
Requisites:
Course:SI430
Title:COMPUTER AND NETWORK SECURITY
Credits: 2—2—3
Description:This course is an introduction to the theoretical and practical facets of Information Assurance (IA) to include: Department of Defense (DoD)/Department of the Navy (DoN) policies and directives, Trusted systems, Access mediation, Cryptography, Public Key Infrastructure (PKI), Information Warfare, Network security and Database security. Laboratory work will include student exercises demonstrating information assurance concepts culminating in a vulnerability analysis of given systems. [spring]
Requisites:SI322
Course:SI432
Title:ADV COMPUTER & NETWORK SECURITY
Credits: 2—2—3
Description:This course provides an introduction to topics in secure system design, including: cryptography, operating system security, and language based security. Where the SI430 course focuses primarily on securing an existing system, this course studies how to design a system to meet security goals. Students will design and implement components of a secure system. [fall, spring]
Requisites:SI430
Course:SI436
Title:DISTRIBUTED SYSTEMS
Credits: 3—0—3
Description:Distributed systems are software systems built on networked architectures, where multiple machines are interconnected by local or wide-area networks. Many currently deployed systems are distributed systems of one type or another, including internet services and control systems used in military applications. This course will provide an in-depth introduction to distributed systems, including their characteristics and challenges, various fundamental structuring paradigms that can simplify the construction of distributed software, and analyze example systems.
Requisites:Prereqs: IC211, IC220, and IC221.
Course:SI440
Title:DATABASE SYSTEMS
Credits: 3—0—3
Description:This course offers an introduction to modern database management systems. Concepts covered include relational model, schema design, SQL, query optimization, concurrency control, and recovery. The course focuses on the design and internals of modern database systems. [fall, spring]
Requisites:Prereq: IC312.
Course:SI441
Title:APPLIED DATABASE SYSTEMS
Credits: 2—2—3
Description:This course introduces the principles underlying Database Management Systems (DBMS) with a special emphasis on database management system structure and function when integrated with web-based database applications. [spring]
Requisites:SI312
Course:SI442
Title:ADV DATABASE SYSTEMS
Credits: 2—2—3
Description:This course will discuss advanced issues in database systems, including parallel, distributed and peer-to-peer databases, data warehousing and data mining, XML and service-oriented architectures. The course incorporates hands-on exercises using commercial database systems and products, as well as a web-database project. [fall, spring]
Requisites:SI440 or SI441
Course:SI444
Title:MOBILE APP DEVELOPMENT
Credits: 2—2—3
Description:This course introduces students to software development for mobile operating systems. Students will apply object-oriented programming and design principles in the development of mobile applications (for example for the Android operating system). Topics include application life cycle, user interface design, event handling, threads, network communication, and mobile security.
Requisites:
Course:SI447
Title:SOFTWARE ENGINEERING
Credits: 2—2—3
Description:An introduction to the basic principles of software engineering.
Requisites:SI312
Course:SI448
Title:RESEARCH SEMINAR/CAPSTONE
Credits: 1—4—3
Description: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. [spring]
Requisites:SI447
Course:SI452
Title:ADV WEB & INTERNET SYSTEMS
Credits: 2—2—3
Description:Web server design and configuration, search engine design and usage, web security and authentication, servlet implementations, web collaboration mechanisms, web services, and knowledge representation on the web. [fall, spring]
Requisites:SY306 or SI350
Course:SI453
Title:HUMAN COMPUTER INTERACTION
Credits: 2—2—3
Description:An introductory course emphasizing interactive software design, development and evaluation using a human-centered approach. Topics include aspects of human sensation, perception and cognitive psychology. [fall, spring]
Requisites:SI312
Course:SI455
Title:ADVANCED COMPUTER NETWORKS
Credits: 3—0—3
Description: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. [spring]
Requisites:Prereq: IC322.
Course:SI458
Title:HIGH PERFORMANCE COMPUTING
Credits: 2—2—3
Description:A supercomputer is generally defined as a system that performs at or near the highest speed for currently available computers. High Performance Computing (HPC), is the use of parallel processing in supercomputers or similar systems for running computationally-intensive application programs. The emphasis is on efficiency at every level for optimum speed of execution. In this course, we will look at the current state of the HPC art, study the techniques used for parallel programming - using cores, nodes, and even GPUs for maximum processing power. We will write some simulations to use these HPC techniques, run the simulations on our own HPC system, and produce visualizations of the resulting data.
Requisites:Prereq: IC312 or SY301.
Course:SI459
Title:BINARY ANALYSIS & EXPLOITATION
Credits: 2—2—3
Description:In this course, midshipmen study in detail how programs execute at the binary level. They gain a better understanding of the compilation process and how high-level source code is mapped to binary machine code. They learn about memory organization on the stack and the heap, analyze binary executable files, learn about operating system projections, and gain an understanding of the binary exploit development process.
Requisites:Pre-reqs: IC220, IC221.
Course:SI460
Title:COMPUTER GRAPHICS
Credits: 2—2—3
Description: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. [fall]
Requisites:Prereq: IC312.
Course:SI475
Title:INTELLIGENT ROBOTICS
Credits: 2—2—3
Description:This course presents a survey of the concepts and theories of modern robot systems, including both manipulators and mobile robots. It covers kinematics, sensing, mapping and navigation, decision making, and learning. Concepts are applied on multiple robotic platforms. [spring]
Requisites:Prereq: IC211 and (IC312 or SY301).