Catalog

Computer Information Science

CIS1130 Foundations of Computer Science (4)
Prerequisite: Math Placement Level 4, or concurrent enrollment in MTH1320 or permission of instructor
This course covers structured problem-solving with Java (steps in building software applications: problem analysis, structures, flowchart, pseudocode, algorithm design, and modularity), number systems and data representation, and an overview of computer organization.  Topics include data types, Boolean expressions and operators, applications and applets, conditional and repetitive structures, methods, arrays, strings and characters, graphical user interface, files, and streams.  Emphasis is placed on modular approach to programming methodology. Credit may be applied toward Core Curriculum Computational Sciences.

CIS1130L Programming Laboratory (1)
Prerequisite
: Permission of instructor
This course is highly recommended to be taken concurrently with CIS1140. May also be taken by students in other Computer Science courses. Students are introduced to general Unix commands and interface facilities and receive individualized assistance with programming assignments. Consultation and feedback concerning a student's approach to design and implementation of computer programs are offered. May be repeated for credit. Does not satisfy any Core Curriculum requirement.

CIS1140 Data Structure and Abstraction (4)
Prerequisites
: MTH1321, and MTH2419 or permission of instructor
Focuses on object-oriented approach with Java to a variety of abstract data types and their associated algorithms. Topics include algorithm analysis, recursion, stacks, queues, lists, trees, binary trees, AVL trees, recursive techniques for implementing generic data structures, sorting algorithms, divide and conquer, complexity analysis for some search and sort algorithms, and hashing.

CIS1150 Computer Organization (4)
Prerequis
ites: CIS1140, MTH1321, and MTH2419 or permission of instructor
Introduces digital design and computer architecture. Topics include Boolean algebra, digital and logic circuits, arithmetic-logic unit design, microarchitecture, implementation, management and interrelationship of processors, memory systems, and I/O subsystems. Instruction sets, registers, addressing modes, and assembly language programming are included.

CIS2009 Advanced HTML and Scripting for the Web (3)
Prerequisite
: BUS2424 or permission of instructor
This is a project-based course in which students learn to create more advanced Web sites. Students learn the information architecture of the World Wide Web, Web standards and protocols, and advanced searching. Building on their previous mastery of basic HTML, students incorporate framesets, Javascript and CGI scripts, and multimedia features into their Web sites.

CIS2211 Algorithms and Complexity (4)
Prerequisites
: CIS1140, MTH1321, and MTH2419 or permission of instructor (MTH1330) and MTH2522 recommended)
Covers algorithm and analysis/complexity, divide and conquer algorithms, searching and sorting algorithms, dynamic programming, Greedy approach, backtracking, complexity analysis for searching and sorting algorithms, P and NP classes of algorithms, and parallel algorithms.

CIS2221 Programming Languages and Compiler (4)
Prerequisites
: CIS1140, CIS1150, MTH2419 or permission of instructor
Basic elements of programming language design, organization, and implementation are studied. Topics include: comparison of imperative, functional, and object-oriented programming, plus an overview of methods for parsing, compiling, interpretation, and optimization, as well as language design, BNF notation, and grammars. Elements of programming languages such as data types, expressions, assignment, control structures, subprograms, parameter passing, ADT, OOP, exception handling, functional languages, and LISP programming are covered. The student project for this course is to design and implement an interpreter/simple language.

CIS2233 Database Management Systems (3)
Prerequisites
: CIS1140 and MTH2419 or permission of instructor
Focuses on file organization and storage management, access methods, logical versus physical organization, and relational, network, and hierarchical models. Topics include database architecture, schemas and query facilities, transaction processing, recovery, concurrency, distributed systems, and issues of performance, integrity, and reliability. The student project is to design and implement an Oracle DBMS application.

CIS2235 Computer Operating Systems and Unix Utilities (4)
Prerequisites
: CIS1140, CIS1150, and MTH2419 or permission of instructor (MTH2522 is recommended)
Focuses on operating systems design and implementation. Topics include: process scheduling, management and protection, concurrency, deadlock control, synchronization, communication plus memory and virtual memory management, I/O processing, disk management, file system, protection, security and performance issues, distributed systems, projects, and applications. UNIX commands, UNIX processes, file system, vi editor, mail and communication, shell environments, regular expressions, shell scripts, UNIX utilities (grep, awk, sed, find), intro to system calls, and security and administration.

CIS2243 Computer Network and Network Programming (4)
Prerequisites
: CIS1140 or permission of instructor (CIS1150 is recommended)
Focuses on methodologies for interconnecting computers and design. Implementation of network-based applications and interaction with a variety of common servers. Topics include: network architectures, topologies, and protocols and their associated algorithms, plus local and wide area networks. Hardware and software aspects of the layered approach to computer networks, LAN technology. Processes, pipes, and signals, multithreading and synchronization, socket programming, TCP Protocol, use of common modules to perform file transfer (FTP), getting e-mail (POP), sending e-mail (SMTP), Telnet connection, Web clients, forking servers and daemons, performance, data integrity, and security.

CIS2245 Software Engineering (3)
Prerequisites
: Junior or senior standing in Computer Science or other CS related program or permission of instructor
Focuses on software development phases: analysis, specification, modularization of a problem, module implementation and testing, interface implementation, integration and testing, documentation, reviews, and post-distribution support, plus object-oriented methods. Software metrics and computer-aided software engineering tools are studied. A team approach to developing and implementing software projects using the SE phases and methods is emphasized.

CIS2255 Computer Graphics (3)
Prerequisites:
CIS1140, MTH1330, and MTH2419 or permission of instructor (MTH2522 and MTH2450 are recommended)
Focuses on graphics hardware, fundamental graphical algorithms, two and three dimensional representation, transformations, viewing parameters, hidden line/surface removal, shading, intensity and color, animation techniques, splines, and surface creation.

CIS2261 Object Oriented Design and Programming (3)
Prerequisites
: CIS1140 are recommended
Focuses on major principles of object-oriented design and analysis including data abstraction, encapsulation, inheritance, and polymorphism. Concepts are illustrated in the context of C++ programming. Topics include: classes, data abstraction, templates, function and operator overloading, friends, derived classes, virtual functions, C++ I/O and Standard Template Library, and object-oriented design with UML.

CIS2277 Web Programming I - Client Side (3)
Prerequisites
: CIS1130 or permission of instructor (CIS1140 is recommended)
Focuses on design and implementation of real-world client-side Web applications. Topics include: HTML, creating images, web design software to create web pages, scripting language (JavaScript) to enhance the functionality and appearance of web pages, Dynamic HTML (CSS - Cascading Style Sheet, object model and collections, event model), multimedia (audio, video) Macromedia Flash, XML form processing, Perl, and CGI.

CIS2278 Web Programming II - Server Side (3)
Prerequisites
: CIS2277 or permission of instructor (CIS1140 is recommended)
Focuses on design and implementation of real-world server-side applications using JSP/Servlets/JDBC and Oracle or MySQL. Topics include: JavaBeans, tag libraries, tracking sessions, servlets, creating databases with Java, querying data bases with Java and Database Connectivity (JDBC), handling e-mail, Struts framework, and security.

CIS2341 Quality Assurance and Testing (3)
Describes the role of testing in quality engineering, and identifies the common objectives, principles, and purposes of testing. Introduces structured, pre-planned testing processes, techniques and tools. Explains the characteristics, differences, and reasons for specification-based (black box), structure-based (white box), and experience-based tests. Students write test cases using equivalence partitioning, boundary value analysis, decision tables, and state transition diagrams, understanding the main purpose of each technique and what sufficiency of coverage is for each technique.

CIS2355 Mobile Device Programming (3)
Introduction to programming the iPhone or iPod Touch. Review of object-oriented programming concepts. Introduction to Objective-C syntax, CocoaTouch Framework, XCode IDE, Interface Builder and the iPhone Software Development Kit to write original programs for the iPhone or iPod Touch using the available tools.

CIS2885 Senior Project (3)
Prerequisites:
Senior standing in Computer Science or other CS related program and permission of instructor
This is the senior capstone course and project. The course emphasizes methodology and implementation of a team approach to management, analysis, design, development, implementation, and testing of a software application. The project will follow the software engineering specific phases. Modular approach, coordination techniques, object-oriented and/or other software development methods are included. May be repeated for credit. Credit may be applied toward Core Curriculum Computational Sciences.

CIS2886 Special Topics in Computer Science (3)
Prerequisite
: Permission of instructor
Designed to address evolving areas in computer science. May be repeated for credit.

CIS2994 Laboratory/Teaching Assistant (1-3)
Prerequisite
: Permission of instructor
Provides an opportunity for Computer Science majors to gain practical experience and earn credit by assisting instructors or by participating in systems management activities or in Computer Science Program/Lab project.

CIS2999 Independent Study in Computer Science (1-3)
Prerequisite
: Permission of instructor
Provides an opportunity for independent study or research under the direction of an instructor. See Undergraduate Policies and Procedures for more information on Independent Study.