2019-2020 Catalog

 

300

CIS-320 Introduction to Software Engineering

This course provides an introduction to the process of developing large scale software systems. Included is the study of the procedures and tools of software engineering. Concepts introduced are software life-cycle models, quality factors, requirements analysis and specification, software design (functional design and object-oriented design), implementation and testing. Prerequisites: CIS-221 or CIS-222. Co-requisite: CIS-221 and CIS-222. One of these may be taken concurrently as long as the other is already completed.

3

CIS-325 Analysis of Algorithms

This course provides an introduction to analyzing the time and space requirements of algorithms. Topics include the design techniques for efficient algorithms; induction, recursion, and divide-and-conquer; greedy algorithms; graph algorithms; network problems; and an introduction to intractable (NP-hard) problems. Prerequisite: CIS-221 or CIS-222 and Co-requisite: CIS-221 and CIS-222. One of these may be taken concurrently as long as the other is already completed.

3

CIS-330 Software Testing: Verification And Validation

This course provides a study of the process of testing software systems, including the tools, methods, and current practices used in assessing the quality and correctness of software. Topics and issues covered include the roles of testing and formal verification, planning and documentation for quality assurance, methods of performing technical reviews, strategies of system testing and integration planning, and principles and practices used in conducting tests. Pre- or co-requisite: CIS-320.

3

CIS-336 Programming Languages

A course designed to analyze and evaluate the important concepts in current programming languages. Emphasis is placed on the functional constructs which define all languages. Students are expected to learn several languages and write programs which illustrate their distinguishing features. Prerequisites: CIS-221 or CIS-222. Co-requisite: CIS-221 and CIS-222. One of these may be taken concurrently as long as the other is already completed.

3

CIS-342 Computer Network Fundamentals

This course studies computer networks from the point of view of the Local Area Network and network interconnection. An overview of the TCP/IP layer models is presented with emphasis on packet transfer across networks. Common applications such as electronic mail, file sharing, web servers, Instant messaging and VIOP are considered. Real world protocols are covered and contemporary network operation systems are reviewed. The role of the network administrator is covered regarding network security, disaster prevention and recovery. Prerequisite: CIS-221.

3

CIS-344 Computer Network Security

This course covers penetration-testing tools and techniques that ethical hackers and security testers use to protect computer networks. This course provides a structured knowledge base for preparing security professionals to discover vulnerabilities and recommend solutions for tightening network security and protecting data from potential attackers. Prerequisite: CIS-221 or CIS-222; and CIS-342; Co-requisite: CIS-221 and CIS-222. One of these may be taken concurrently as long as the other is already completed.

3

CIS-346 Computer Networks Data Communication

This course examines how the fundamentals of data communication operate in a distributed computing environment. It focuses on packet switched networks and virtual circuit networks, including a layered approach to network design and coverage of the TCP/IP model, and internetworking with router-based architecture, IP addressing, datagram encapsulation and fragmentation, transmission via UDP and TCP, and application level protocols such as Telnet, FTP, SMTP and others. Also, provides coverage of general topics and such as routing error handling, security and encryption. Prerequisite: CIS-342.

3

CIS-351 Internet Programming

An intermediate course in Internet Programming. Special emphasis will be given to learning current and emerging server side languages and technologies how they are utilized with other web conventions. Students should be familiar with basic web languages such as HTML and Javascript. Prerequisite: CIS-221 or CIS-222; Co-requisite: CIS-221 and CIS-222. One of these may be taken concurrently as long as the other is already completed.

3

CIS-361 Assembly Programming

An introduction to assembly language programming along with associated concepts of machine architecture and design. Topics include the organization of the CPU and peripheral equipment, addressing techniques, segmentation and linkage, macro assembly, assembler construction, interrupts, and timing. Prerquisites: CIS-221.

3

CIS-362 Compiler Programming

The course surveys the basic issues of compiler design, beginning with lexical and syntactic analysis and proceeding through code generation, optimization, and error handling. The central activity of the course will be a large programming project. Prerequisites: CIS-221

3

CIS-363 Concurrent Programming

Topics in the theory of concurrent programming. Models of concurrency. Programming logics. Emphasis on the formal specification and verification of concurrent programs. Prerequisite: CIS-221 or CIS-222; Co-requisites: CIS-221 and CIS-222. One of these may be taken concurrently as long as the other one is already completed.

3

CIS-373 Numerical Analysis

A study of the operation, efficiency, and accuracy of numerical algorithmic processes. Topics include rates of convergence, analysis of error, solution of equations, interpolation, numerical integration and differentiation, solution of linear systems, and approximation/curve-fitting. Prerequisites: MAT-254, MAT-280 and CIS-125.

3

CIS-382 Database Programming Development

This is a course in Relational Database design and development. Topics include data modeling, database design and Structured Query Language. Current and emerging topics in database systems are also covered. Prerequisites: CIS-221 or CIS-222; Co-requisites: CIS-221 and CIS-222. One of these may be taken concurrently as long as the other one is already completed.

3

CIS-385 Theory of Computation

This course provides an introduction to the classical and contemporary theory of computation. Topics include theory of automata and formal language, computing by Turing machines, Church's thesis, and decision problems. Nondeterminism and NP-hard problems will be considered. Prerequisites: CIS-336 and MAT-254.

3

CIS-390 Distributed Systems

This course examines how distributed computing systems operate over computer networks. It introduces fundamentals of data communication, including an overview of the use of physical media to transfer bits, time division and frequency division multiplexing, encoding, modulation, bandwidth, throughput, and noise. It focuses on packet switched networks and virtual circuit networks, including a layered approach to network design and coverage of both and OSI and TCP/IP models, and internetworking with router-based architecture, IP addressing, datagram encapsulation and fragmentation, transmission via UDP and TCP, and application level protocols such as Telnet, FTP, SMTP and others. Also, provides coverage of general topics and such as routing error handling, security and encryption. Prerequisites: CIS-221 or CIS-222 and CIS-236.

3

CIS-396 Advanced Studies in Computer Information Systems

A course in advanced topics of current interest in Computer Information Systems. Specific content varies term by term. Prerequisite: Permission of Division Chair.

1 to 3
Indiana Weselayan