Computer Science (CmSc) Classes
140. Exploring Information Technology.
This course provides experience and instruction in using digital technology for students’ personal and professional lives. Students are introduced to the latest advances in important hardware, software, Internet and mobile technologies. Telecommunications, databases, e-commerce, and information support systems are covered along with search engines and social networks. Ethical and societal issues related to these technologies are examined. Taught every Spring. Four credits.
150. Introduction to Programming
This course introduces computer programming, emphasizing algorithm design and implementation using conditionals, loops, functions, recursion, and object oriented programming. The course is taught in Python. Prerequisite: One of the following: Math 105/105T Quantitative Reasoning, Math ACT of 22 or higher, or Math SAT of 530 or higher. QUANT. Four credits. Offered every semester
155. Data Structures and Object Oriented Programming
This course explores object-oriented programming in Java, including encapsulation, overloading, interfaces, inheritance and data structures such as linked lists, stacks and queues. Algorithms for searching and sorting are examined. Prerequisite: CmSc 150. Four credits. Offered every spring.
175. Discrete Mathematics.
This course covers selected topics in discrete mathematics that are essential to the study of computer science. Topics include logic and proofs, sets, relations and functions, algorithms and counting of operations, recursion and recurrence relations, graphs and trees. The course has a programming component to illustrate the discussed topics. Prerequisite: One of the following: Math 105/105T Quantitative Reasoning, Math ACT of 22 or higher, or Math SAT of 530 or higher. Co-requisite: CmSc 150, Fundamentals of Computing I or permission of instructor. Taught every Spring. Four credits.
180. Independent Study in Computer Science.
190. Special Topics in Computer Science.
198. Independent Research in Computer Science.
220. The Social Context of Computing.
This course examines the role of computers and computing professionals in contemporary society. Topics include the history and development of computing, legal issues associated with computing (including the right to privacy, intellectual property rights, and liability), and social/moral issues associated with computing. This course is offered during May Term in even numbered years. Area of engagement: Ethics and Values Inquiry. Embedded skill: Information Literacy. Four credits.
250. Introduction to Algorithms and Algorithm Analysis.
This course is an introduction to the fundamental ideas used in algorithm analysis and design, illustrated through a variety of algorithms of practical utility. Topics include efficient searching and sorting algorithms for advanced data structures (hash tables, priority queues, and various tree structures), introduction to graph representation and graph algorithms, and the fundamentals of algorithm analysis and computational complexity. Laboratory exercises are used to demonstrate, compare and contrast the advantages and disadvantages of the examined algorithms. Prerequisites: Computer Science 155 Fundamentals of Computing II, Computer Science 175 Discrete Mathematics, Math 151 Calculus I. Embedded skill: Written Communication. Taught every Fall. Four credits.
255. Introduction to Database Systems and SQL.
The primary focus of this course is the design and implementation of database systems. Current database design techniques are covered including data modeling and normalization. Implementation issues with respect to the relational model are addressed as well. SQL commands for data administration and manipulation will also be covered along with creating triggers and stored procedures. Prerequisite: Computer Science 150, Fundamentals of Computing I or consent of instructor. Taught every Fall semester. Four credits.
265. Computer Organization.
This course concentrates on the relationship between computing hardware and the execution of software at the machine language level. In addition to the hardware details of input-output, communications and storage devices, the operation of central processing units at the register level is studied in detail. Real world processors and their instruction sets are studied and compared as examples. Students program and employ emulated machine language instruction sets to study machine language and the translation of assembly language into machine language. Prerequisite: Computer Science 150 Fundamentals of Computing I. Taught every Spring semester. Four credits.
280. Independent Study in Computer Science.
290. Special Topics in Computer Science.
298. Independent Research in Computer Science.
310. Artificial Intelligence.
This course presents basic topics related to intelligent agents with emphasis on knowledge representation, inference mechanisms and search strategies. Applications in expert systems, natural language understanding, and machine learning will be discussed. Students will be exposed to an AI programming language (Prolog or Lisp). Prerequisite: Computer Science 250 Introduction to Algorithms and Algorithm Analysis. Taught every Spring of even numbered years. Four credits.
315. Programming Languages.
This course examines the organization of programming languages, and basic issues related to their design and implementation. Topics include language structures and abstraction mechanisms, language translation, major language paradigms – procedural, functional, object-oriented and logic programming, and techniques which support parallel and distributed computing. The major features of several programming languages will also be discussed. Prerequisites: Computer Science 250 Introduction to Algorithms and Algorithm Analysis. Computer Science 265 Computer Organization recommended. Taught ever Fall of even numbered years. Four credits.
335. Operating Systems.
This course covers the basic concepts, structure, and mechanisms of computer operating systems. The course begins with a review of computer hardware concepts, emphasizing topics related to operating system functionality, such as interrupts and memory organization. Hardware concepts for operating system functions, evolution of operating systems, control of processes, principles and problems of concurrency, memory management techniques, scheduling algorithms, input/output and disk scheduling, file management, and security are studied in detail. Several real-world operating systems are used as examples throughout the course. Prerequisite: Computer Science 155 Fundamentals of Computing II, and Computer Science 265 Computer Organization. Taught every Fall of even numbered years. Four credits.
340. Introduction to Networks.
This course of study in computer networks concentrates on typical hardware interfaces, programming methods, and communications protocols. Topics considered in detail include electrical interfaces, data transmission, protocol stacks, data link protocols, local area networks, wide area networks, internetworking, transport protocols, application support, firewalls, virus scanning, and virtual private networks. Prerequisite: Computer Science 150 Fundamentals of Computing I and Computer Science 265 Computer Organization. Recommended: Computer Science 155 Fundamentals of Computing II. Taught every Spring semester. Four credits.
355. Advanced Database Systems.
This course concentrates on advanced database topics. Topics will be selected from data and database administration, transaction management and concurrency control, client/server systems and distributed databases, data warehousing and data mining, business intelligence, object-relational databases and web technologies. Advanced SQL programming features will also be included. Prerequisite: Computer Information Systems 255, Introduction to Database Systems or equivalent. Taught every Spring semester. Four credits.
360. Advanced Algorithms.
This course presents design techniques for developing efficient algorithms. Students explore several classes of algorithms with respect to the underlying data structures, the design method, and application orientation. Topics to be selected from: dynamic programming, greedy algorithms, advanced data structures that support operations on dynamic sets, advanced graph algorithms, sorting networks, matrix operations, linear programming, string matching, computational geometry, and approximation algorithms for NP-hard problems. Prerequisite: Computer Science 250 Introduction to Algorithms and Algorithm Analysis. Four credits.
365. Theory of Computation.
This course serves as an introduction to the basic theory of Computer Science and formal methods of computation. Topics include automata theory, formal languages and grammars, Turing machines, computability and computational complexity. Prerequisite: Computer Science 250 Introduction to Algorithms and Algorithm Analysis. Taught in Spring of odd numbered years. Four credits. Same as Math 365.
375. Software Engineering.
This course examines the formal process of software development. Topics include the software life cycle, project planning, requirements gathering and analysis, specifications, design paradigms, implementation, various testing strategies, security, and other current topics. Prerequisites: Computer Science 155 Fundamentals of Computing II and Computer Science/Computer Information Systems 255 Introduction to Database Systems. Taught in Fall of odd numbered years. Four credits.
380. Independent Study in Computer Science.
Students must work on either a significant research project, a significant software development project, or a development project as part of an internship. Prerequisite: Completion of at least one 300-level CmSc or CIS course, submission of a proposal, and senior standing. Four credits.
Students must work on either a significant research project, a significant software development project, or a development project as part of an internship. This is a one credit version of 385 for when a student is working on an internship or project in combination with another major that does not require an additional four credits of load. Prerequisite: Completion of at least one 300-level CmSc or CIS course, submission of a proposal, and senior standing. One credit.
390. Special Topics in Computer Science.
398. Independent Research in Computer Science.