B.A. IN COMPUTER science
The computer and information science program is designed to educate the student in computer science with primary areas of application in business, mathematics, and scientific problem solving. These applications are taught with emphasis on the principles of software engineering. Courses rely heavily on the use of microcomputers, which allow the student to work in the labs as well as at home.
NOTE: Any mathematics courses taken prior to Calculus I do not count as credit toward graduation requirements. All CIS & MAT courses must have a grade of "C" or better to meet graduation requirements.
- Download the Computer Science 2009-2010 Curriculum Worksheet
CIS100, Basic Principles of Computers (3). Emphasis is on the use and capabilities of the microcomputer with daily opportunity for individual “hands-on” experience with word processing, spreadsheet, and database software applications. Discussions on designing and developing problem solutions are emphasized.
CIS101, Computer Programming I (Language: C) (3) The use, capabilities, and limitations of digital computers are introduced. Computer operations and the formulation of procedures to solve problems are accomplished through the use of the programming language, C. Topics include C data types, formatted and character I/O, C operators, expressions and statements. Looping control structures, decision structures and userwritten functions are covered in lecture and are supplemented with lab exercises to provide practical experience in writing, compiling and debugging C programs. Prerequisite: CIS100.
CIS102, Computer Programming II (3). C and C++ programming languages are used with a variety of applications in the public and private sectors. Course coverage includes the discussion of input/output techniques, files, records, and data types. The student will write and compile several programs to illustrate these features. Emphasis is on structured programming, algorithmic development, decision structures, repetition structures, functions and arrays. The student will write and compile several programs to illustrate these features. Prerequisite: CIS101.
CIS103, Information Structures (3). The basic concepts of information modeling structures includes linear lists and multi-linked structures, storage management, programming language implementation structures, sorting and searching, and examples of the use of information structures in an object-oriented programming environment. Prerequisites: CIS106.
CIS104, Computer Organization (3). Assembly language macros include the use of input/output facilities; interrupt systems; loaders; and memory addressing techniques. The basic architecture of the computer hardware is examined through the use of sample programs, the assembly process and the debugger. Prerequisite: CIS105.
CIS105, Basic Assembler Language (3) Course coverage includes an introduction to assembly language programming. The discussion of number systems; memory organization and addressing; data and instruction formats; data manipulation; comparison and branching; instruction and address generation; file definition; input/output macros; and fixed point arithmetic is illustrated through several programming assignments. Emphasis is placed upon the understanding of the overall assembly process. Prerequisites: CIS101
CIS106, Computer Programming III (3). The necessary skills and concepts in analyzing and solving problems are continued through the use of C++. Proficiency in the further design, coding, debugging, and documenting of programs to solve problems using the object-oriented programming paradigms. Topics include multi dimensional arrays, classes, records, and file handling. Prerequisites: CIS102
CIS201, Programming Languages (3). The study of programming languages examines the essential concepts that are common to modern programming languages. A broad range of issues is considered. Techniques for formal specification of syntax are presented. Several essential features of modern programming languages are discussed, including information binding, control structures, scope rules, data types and data abstraction, concurrency, recursion, input/output, and execution environment. Four different computational models or paradigms for programming languages are considered: the imperative, functional, logic-oriented and objectoriented models. Examples are drawn from a number of existing languages, such as Ada, LISP, FORTRAN, COBOL, Pascal and C. Prerequisites: CIS103.
CIS211, Computer Operating Systems (3). Study includes the basic principles of operating system design and implementation. Consideration is given to the general architecture of several representative computer systems; management of memory, processors and devices; file systems; protection; operating systems design techniques; performance measurement and evaluation. A case study of a representative operating system is used to illustrate these principles. Prerequisites: CIS103 and CIS104.
CIS215, Fundamental Structures of Computer Science I (3) This course introduces students to the fundamental scientific concepts that underlie computer science and computer programming. Software concepts such as abstraction, representation, correctness, and performance analysis are developed and are related to underlying mathematical concepts. Students are asked to apply these concepts to programming problems throughout the course. Prerequisites: CIS103 and CIS105.
CIS231, Compiler Construction (3). The study of compilers through programming language structures, translation, loading, execution, and storage allocation. Compilation of simple expressions and statements is covered. The organization of a compiler includes compile-time and scan-time, symbol tables, lexical scan, syntax scan, object code generation, errors, diagnostics, object code, optimization techniques, and overall design. This is illustrated through the use of compiler-writing languages and bootstrapping. Prerequisites: CIS103 and CIS104.
CIS301 Switching Theory (3). Switching algebra, gate network analysis and synthesis is studied through the use of Boolean algebra. Topics include combinatorial circuit minimization; sequential circuit analysis and synthesis; sequential circuit state minimization, and elementary number systems and codes. Prerequisite: CIS104.
CIS311, System Simulation (3). Study includes an introduction to simulation and a comparison of various techniques such as discrete simulation models, queuing theory and stochastic processes. Coverage includes simulation languages and simulation methodology for the generation of random numbers, design of simulation experiments for optimization, analysis of data generated by simulation experiments and the validation of simulation models and results. Prerequisite: CIS211.
CIS321, Information Organization and Retrieval (3). The structure of semi-formal languages and models for the representation of structured information includes aspects of natural language processing on digital computers. The analysis of information content by statistical, syntactic, and logical methods is studied. Search and matching techniques, automatic retrieval systems, question/answering systems, production of secondary outputs and the evaluation of retrieval effectiveness is also studied. Prerequisite: CIS201.
CIS330, Algorithms and FORTRAN (3). Prerequisite: CIS103 and CIS105. Study includes an introduction to abstract algorithms and to their design, analysis, and realization. The goal of the course is to develop skill with practical algorithm design and analysis techniques and to develop the ability to apply these techniques to the construction of real systems using the FORTRAN programming language.
CIS331, Theory of Computability (3). Prerequisite: CIS101 and MAT205. Turing machines, unsolvability results, and the halting problem are discussed. Consideration is given to the study of machines with restructured memory access, limited memory, and limited computing time. Study also includes recursive function theory and complexity classification. Comparisons of searching and sorting techniques are studied through the use of computation models including relationships to algorithms and programming.
CIS401, Topics in Computer and Information Sciences (3) Prerequisite: Permission of instructor. A seminar course which includes topics that are determined by students and instructors. This course may be taken more than once if the topics are different.
CIS402, Operations Analysis and Modeling (3). Prerequisites: CIS101 and MAT205. This study includes the characterization of scheduling situations, analysis of allocation problems with mathematical programming, queuing models; inventory models, and the use of simulation models.
CIS411, Large-Scale Information Processing Systems (3). Course study includes the organization of major types of information processing systems, and storage structure techniques. Study will include the discussion of designing “best” systems by organizing files and segmenting problems into computer programs to make efficient use of hardware devices. Documentation methods and techniques for modifying systems are studied along with the use of optimization and simulation as design techniques. Study includes communication problems among individuals involved in system development. Prerequisite: CIS311
CIS413, Software Engineering (3). The student studies the nature of the program development task when many people, many modules, many versions, or many years are involved in designing, developing, and maintaining the system. The issues are both technical (e.g., design, specification, version control) and administrative (e.g., cost estimation and elementary management). The course will consist primarily of working on the cooperative creation and modification of software systems. Prerequisites: CIS103 and CIS105.