CIS Course Descriptions
Note that course descriptions and when courses are offered are subject to revision when needed.
NSCI 255 Science of Computing
This course establishes computing as a science and affirms the connection between computing and the sciences. Topics include the scientific method, methodologies used in computer science for evaluating hypotheses, as well as how computing is used as a tool in other fields of science. The course includes a lab component in which students will get hands-on experience investigating computer science problems. Programs will be set up for students to run so they can test different hypotheses. It will be possible to configure the programs with different parameters to see the impact of running over more data sets, running different algorithms, running in different environments, etc. The experiments involve generating and collecting data that can be analyzed to determine whether preliminary hypotheses are true or false. The data, analysis, and conclusions will be written up as lab reports. This is a Tier 2 science course. Any Tier 1 science course serves as the prerequisite. Four credits.
CS 102 Fundamentals of IT and Computing
This course is for the student who wishes to be fluent in information technology (IT) and computer concepts. It is an introduction to the wide range of concepts, techniques, and applications of computer and network technologies. Emphasis is on the possibilities and limitations of Computer Science/Information Systems/Information Technology in personal, commercial, and organizational activities. Topics include history of computing, computer types, computer structure and operation, computer languages, human/computer interaction, program development, computer applications, basic networking, security, and computers in society. Offered in the fall as a freshman seminar course and in the spring semester as a standard course. Three credits.
CS 110 C++ Programming I
An introduction to problem-solving and computer programming. Topics include algorithms, program structure, input/output, modularity and parameters, control structures, data abstraction, arrays, text files, and structured techniques. Offered fall and spring semesters. Three credits.
CS 111 C++ Programming II
A study of advanced programming techniques and applications continuing from the point where CS 110 ended. Elementary data structures and associated algorithms are examined. Topics covered include arrays, strings, file processing, classes, stacks, queues, linked lists, and recursion. Prerequisite: CS 110. Offered fall and spring semesters. Three credits.
CS 170 Discrete Structures I
This course is an introduction to the topics in discrete mathematics that are of particular use in computing. Discrete mathematics is especially concerned with counting techniques and finite or infinite sets of integers (discrete numbers), instead of a continuous range of numbers (such as the real numbers used in calculus). Topics to be covered include logic, sets, functions, simple proof techniques, algorithms, running time analysis, basics of number theory, RSA encryption, graphs and trees, finite state machines, parsing, and grammars. Prerequisite: CS 110. Offered fall semester. Three credits.
CS 171 Introduction to Computability
This course emphasizes the mathematical and theoretical foundations of computer science. The primary topics are computability theory and Turing machines, complexity theory (including the classes P, NP, NP-complete, and NP hard), grammars and parsing, push-down automata, and running time analysis (especially using recurrence relations and generating functions). Important fundamental questions will be answered, such as whether all functions are computable and the existence of unsolvable problems. Also included is an introduction to proofs of program correctness and some running time analysis for algorithms to solve the traveling salesperson problem. Prerequisite: CS 170. Offered spring semester alternate years (spring 2020). Three credits.
CS 205 Web Site Design and Programming
CS 214 Introduction to Mobile Application Programming
This course will cover the basics of developing applications for mobile platforms such as the Apple iOS and Android devices. Differences between mobile and desktop computing will be discussed. Programming languages for the development of mobile software will be introduced along with integrated development environments such as Xcode for iOS and Eclipse for Android. Students will complete projects in small groups and must pass exams individually. Prerequisite: CS 221. Offered on an irregular basis. Three credits.
CS 221 Data Structures
The study of data structures and associated algorithms is developed in an object-oriented fashion. This course attempts to show the value of object-oriented design. Various implementations of data structures and the efficiency of the associated algorithms are discussed. Topics to be covered include stacks, queues, keyed tables, recursion, linked lists, binary search trees, sorting, searching, and hash functions. Prerequisite: CS 111. Offered fall semester. Three credits.
CS 225 Cybersecurity
This course examines both the theory and practices that serve as the foundations of cybersecurity. Utilizing the CISSP Common Body of Knowledge as a foundation, fundamentals of access control, network security, risk management, cryptography, business continuity/disaster planning, environmental security, software development security, and security architecture and design are introduced. Prerequisite: CS 102. Offered fall semester alternate years (fall 2020). Three credits.
CS 226 Mobile Forensics
This course covers areas of mobile forensics, including topics from the legal and technical aspects of the discipline. Software based forensics tools will be utilized to examine mobile communication and computing devices. Removable storage mediums will also be addressed. A focus will be placed on recovering data that could be used to identify users and their actions. Supporting topics will also cover the basics of the investigative process, issues regarding privacy, incident response policies and procedures, evidence gathering, exhibit handling, and differences between private and criminal investigations. The course will also cover the essentials of mobile phone networks and differences with traditional data/communication networks. Prerequisite: CS 225. Offered on an irregular basis. Three credits.
CS 250 User Interface Design
Good decisions involving the design of a user interface can lead to programs that are easier for end users to execute. Code that is written by programmers who are sensitive to ergonomic issues will execute faster, have fewer errors, require less training time and ultimately give its end user a greater sense of satisfaction. This course will discuss the many issues involving such human-computer interaction. A group project involving the design or re-design of a site or application will be completed. Prerequisite: CS111. Offered on an irregular basis. Three credits.
CS 255 Introduction to Artificial Intelligence
This course will present overviews of the roots of artificial intelligence, predicate calculus, search techniques, knowledge representation, knowledge-based problem-solving, the complexity of natural language and machine learning. In addition to other assignments, students will be required to complete projects using languages and techniques which will be introduced during the course. Prerequisite: CS 170 and CS 221. Offered on an irregular basis. Three credits.
CS 265 Information Systems Management
This course provides an introduction to management information systems, e-commerce, planning, and decision support systems explaining how information is used in organizations, the role of information technology professionals, and how information systems are used to an advantage in business settings. Social and ethical issues related to the design, implementation and use of information systems will be addressed. Basic information technology project management skills will be covered as well as the issues and challenges involved in managing an information services department and navigating organizational structures in the corporate world. Prerequisite: CS 102. Offered fall semester alternate years (fall 2019). Three credits.
CS 270 Introduction to Numerical Computation
An introduction to the algorithms of scientific computation and their application to problems in engineering, algebra and calculus. Topics covered include number representation, error analysis, programming techniques, function evaluation, solutions of nonlinear equations, solutions of linear systems, numerical integration, eigenvalues/eigenvectors, and solutions of differential equations. Prior programming experience is not required. Prerequisite: MA 109 or MA 111. Offered on an irregular basis. Three credits.
CS 292 Engineering and Computer Ethics
Study of ethical issues in the fields of engineering and computing: Topics include safety and liability, professional responsibility to clients and employers, whistle-blowing, codes of ethics, legal issues that relate to privacy, intellectual property rights, and cybercrime. The course also examines issues concerning the use and development of developing and emerging technologies that may involve computers or be used by computing or engineering professionals. Offered fall semester. Prerequisite: PL 101. Two credits.
CS 305 Web Technologies
This course focuses on more complex web technologies than are covered in CS 205, especially ASP.NET. The majority of the course involves building an ecommerce site and using webpages as front-ends to server-based databases. Prerequisite: CS 221. Offered on an irregular basis. Three credits.
CS 310 Programming Languages
This course examines the features, implementation, and design of programming languages. Various high-level programming languages representing different programming paradigms will be covered. Java will be used as the primary example of an object-oriented programming language. Programming language translation and runtime features such as storage allocation will be among the topics that are considered. Prerequisites: CS 170 and CS 335. Offered spring semester. Three credits.
CS 312 Algorithms
This course covers the design, operation, and running time analysis of a wide array of algorithms. This includes the study of algorithms that follow these paradigms: divide-and-conquer, dynamic programming, randomized algorithms, and greedy algorithms. Algorithms examined include many for searching and sorting; insertions, lookups, and deletions in various data structures; and common graph algorithms. Prerequisites: CS 171 and CS 221. Offered fall semester alternate years (fall 2020). Three credits.
CS 315 Server-Side Programming
This course concentrates on designing, writing, installing, and configuring software for Linux and Windows servers. Possible languages to be used include C++, PowerShell, Node.js, and bash. Server-based software projects often provide a service that many users can access simultaneously, often over the network. Also covered is the use of git and GitHub in managing projects and installing software. Prerequisite: CS 221. Offered on an irregular basis. Three credits.
CS 321 Data Communications and Computer Networks
This course covers the major areas of data communications and networking. It uses the OSI layered approach and focuses especially on the TCP/IP protocols and the Internet. LAN technologies and the configuration of routers and switches are also included. Prerequisite: CS 225. Offered fall semester alternate years (fall 2019). Three credits.
CS 322 Advanced Networking
This course will address computer networking beyond the OSI model framework. Current industry techniques and technologies are explored in areas of voice, mobile, wireless, and remote technologies. Issues in system security, performance, and maintenance will also be examined. Current research and evolving trends will be discussed to highlight the ever-changing nature of the field and to identify the skills necessary in evaluating new technologies. Students will be expected to build functioning networks during hands on activities beginning with basic wiring through router and VPN configurations. Prerequisite: CS 321. Offered spring semester alternate years (spring 2020). Three credits.
CS 325 Advanced Topics in Cybersecurity
This course explores advanced topics in cybersecurity such as computer forensics, malware analysis, secure coding, and penetration testing of web applications and networks. Building upon the theoretical foundations of CS 225, students will participate in multiple lab and practical exercises to gain experience with current field techniques. The course requires a basic knowledge of cybersecurity issues, networking, and programming background. Prerequisite: CS 225. Offered spring semester alternate years (spring 2021). Three credits.
CS 330 Operating Systems
This course covers basic computer hardware, processes, CPU scheduling, virtual memory and main memory management, caching, interrupts, processes and threads, system calls, synchronization, I/O, deadlock, disk scheduling, real time scheduling, operating systems security, file systems, interprocess communications, multiprocessor systems, storage management, virtualization, the user interface, and performance. In addition, it uses Linux as a case study, emphasizing system administration tasks, Linux utilities, pipes, and bash scripts. Prerequisite: CS 335. Offered spring semester. Three credits.
CS 335 Computer Organization
This course introduces fundamental concepts of how computers process instructions and data. Hardware organization, instruction and addressing mode processing, basic digital circuits and computer arithmetic, and translation of high-level language constructs to assembly code are discussed. Prerequisite: CS 221. Offered fall semester. Three credits.
CS 350 Database Concepts and Information Structures
This is a first course in modeling complex organizations of data. It includes a review of logical file structures and access methods. Information structures and databases are studied, with detailed work in personal and enterprise database systems. Prerequisite: CS 221. Offered fall semester. Three credits.
CS 351 Information Systems Analysis and Design
An investigation of the discipline of systems analysis in relation to the information system life cycle. Structured and object-oriented techniques of analysis and design applicable to current system documentation and the development of general systems solutions are presented. Topics include process and data flows, I/O designs, and systems modeling. Problem solving and communication skills employed in the transition from analysis to design are stressed. Cannot substitute for CS 355 Software Engineering. Prerequisite: CS 221 Offered spring semester alternate years (spring 2021). Three credits.
CS 355 Software Engineering
This course will cover methodologies for program construction which will allow software of high quality to be constructed, where high quality software is defined as software which is reliable and reasonably easy to understand, modify, and maintain. The course covers the software development life cycle, from requirements (elicitation, modeling, analysis and specification), to design specifications, to implementation, testing and delivery. Also included are project management, project documentation and the development of communications skills through written documentation. Cannot substitute for CS 351 Information Systems Analysis and Design. Prerequisite: CS 221. Offered spring semester alternate years (spring 2020). Three credits.
CS 357 Computing Science Project I
Using principles and techniques developed in CS 351 Systems Analysis and Design or CS 355 Software Engineering, a capstone senior project is researched, designed, documented, implemented and tested over two semesters. Projects are done in teams. Projects may be done for actual clients. Prerequisite: CS 351 or CS 355. Offered fall semester. One credit.
CS 358 Computing Science Project II
Using a design developed in CS 357 Computing Science Project I, a software system is implemented and tested. Projects are done in teams. Projects may be done for actual clients. Prerequisite: CS 357. Offered spring semester. Two credits.
CS 365 Computer Game Design and Development
This course covers concepts and methods for the design and development of computer games. Topics include: graphics and animation, sprites, software design, game design, user interfaces, game development environments. Prerequisite: CS 221. Three credits.
CS 366 Advanced Computer Game Design and Development
This course is a continuation of CS 365 and is focused on the development of 3D games and other advanced game programming techniques. Prerequisite: CS 365. Three credits.
CS 367 Console Game Design and Development
This course is focused on the development of networked games with emphasis on both hardware and software design issues. The course will explore sophisticated programming techniques and advanced algorithms. This course may be repeated. Prerequisite: CS 366. Three credits.
CS 375 Applied Cryptography
This course presents sufficient number theory and algebra to describe common cryptographic systems. Course topics include the German Engima machine, DES, AES, the RSA cryptosystem, discrete logarithms, and the ElGamal cryptosystem. Students will use computer software to solve cryptography problems and will write their own software to handle some types of cryptography, cryptanalysis, etc. Mathematica may be used to solve some of the problems. Students will be asked to implement several cryptographic algorithms using C++ in Linux with the aid of the BigInt package. Some of these algorithm implementations might be done as group projects. Common applications of cryptography such as key distribution, digital signatures, and cryptocurrencies will also be studied, as well as some of the methods of attacking cryptosystems. Prerequisites: CS 170 and CS 221. Offered fall semester alternate years. Three credits.
CS 450 Independent Study -- Computing
An independent study may be possible by arrangement with an individual faculty member. Course may be repeated with a different topic. Variable credit.
CS 550 Computing Internship
An internship involves practical work experience, typically with a local business. Course may be repeated. Variable credit, but any such credit cannot be applied to CIS electives. Internships may be done for no credit.