105. Microcomputer Applications.
Overview of microcomputer hardware and software systems that enhance personal and professional productivity. Overview of computer components, microcomputer operating systems, word processing, spreadsheets, and database management systems. Emphasizes integrated use of these tools to solve problems. Involves substantial amount of lab work outside of class.
Credit: 3 Hours.
Syllabus

115. Computer Programming I.
Introductory analysis, design, implementation, and debugging of well-structured computer programs written in C++. Style and documentation emphasized. Primitive commands, basic data types, control structures, scope, functions, parameters, arrays, and records.
Credit: 3 Hours.

116. Computer Programming II.
Emphasizes top-down design, modularity, recursion, dynamic variables, and data structures such as trees, stacks, and queues.
Prerequisite: CSCI 115
Credit: 3 Hours.

120. Business Application Programming.
Structure of the widely used COBOL programming language and algorithms that serve as the basis for supporting business information systems. Use of structured COBOL and software engineering techniques to implement projects involving screen management, file processing, and multilevel reports.
Prerequisite: CSCI 115
Credit: 3 Hours.

210. Scientific Computing and Problem Solving.
Use of computer software tools to assist in conducting scientific research. Problem and context identification, mathematic modeling of relationships and/or conjectures, selection of software tools, development, implementation and testing of designs. Computing tools include spreadsheets, simulation software, and programming languages. Projects reflect the type of research conducted in courses designed for science and engineering majors. Focus will be on problems whose solutions require mathematics, statistics, computer science, and basic understanding of one or more science areas.
Prerequisites: MATH 121 or 123 (or satisfactory score on the calculus readiness section of the math placement test) and completion of at least one course in a laboratory science sequence.
Credit: 3 Hours.

215. Computer Architecture and Programming.
Computer architecture and machine language; internal data representation; symbolic coding and assembly systems; macro facilities; program segmentation and linkage; construction of elementary assemblers; overview of operating systems.
Prerequisite: CSCI 116
Credit: 3 Hours.

216. Computer Organization.
Logic design, information transfer, and control within computers. Boolean functions, combinational and sequential logic elements, number representations and arithmetic, microprogrammed vs hardwired control, input/output, and interrupts.
Prerequisite: CSCI 215
Credit: 3 Hours.

240. Introduction to File Processing.
External data structures used to represent various file organizations, such as sequential, indexed, and random; algorithms for searching and sorting files; direct access files using B-trees and hashing; techniques for implementing inverted lists and multilists.
Prerequisite: CSCI 116
Credit: 3 Hours.

305. Systems Analysis and Design.
Software engineering approach to the system life cycle of computer-based information systems. Modern structured techniques, employing data-flow diagrams, data dictionaries, data structure diagrams, structured English minispecs, and structure charts, used in the case studies and class projects.
Prerequisite: CSCI 116 and completion of at least one 200-level computer science course.
Credit: 3 Hours.

310. Data Structures and Algorithm Analysis.
Analysis of algorithms that represent and transform information structures such as strings, lists, stacks, queues, and multilinked structures; techniques for finding paths and spanning trees in graphs; methods of dynamic storage allocation and recovery; abstract data types.
Prerequisites: CSCI 215 and 240
Credit: 3 Hours.

320. Computer Graphics.
Interactive graphics displays. Line-drawing algorithms, circle generation, transformation, clipping and windowing, segmented display files, picture structure, graphic input techniques, raster graphics, scan conversion algorithms, three-dimensional transformations and perspective, and hidden surfaces. Includes writing of graphics packages using microcomputers and graphics terminals and plotters. Offered alternate years.
Prerequisites: CSCI 310 and MATH 126
Credit: 3 Hours.

340. Numerical Analysis.
Introductory numerical techniques emphasizing algorithms suitable for use with a computer. Error analysis and critical comparison of alternate algorithms emphasized. Series approximations to functions, roots of equations, linear systems of equations, integration, and ordinary differential equations. Offered alternate years.
Prerequisites: CSCI 115 and MATH 126
Credit: 3 Hours.

342. Principles of Programming Languages.
Introductory programming language design and analysis. Formal syntax, data types, storage models, control structures, binding occurrences, procedural abstraction, definition structures, concurrent processes, and formal semantics. Examples include C++, Ada, APL, LISP, Prolog, and Smalltalk.
Prerequisite: CSCI 310
Credit: 3 Hours.

365. Computer Networking and Data Communication.
Overview of computer networks using various models, such as the OSI layered approach, IEEE 802 and "real" protocols, including TCP/IP and popular commercial protocols. Design and implementation of LANs (Ethernet, FDDI, etc.) using the campus network. Design of internetworks and routing. Managing networks. Client/server applications.
Prerequisite: CSCI 116 and completion of at least one 200-level Computer Science course.
Credit: 3 Hours.

371. Database Management Systems Design.
Design techniques and secondary storage structures used in computer-based data models. Attributes and functional dependencies; data normalization; network, relational, and hierarchical models; schema and query languages; integrity and security issues.
Prerequisite: CSCI 240
Credit: 3 Hours.

380. Operating Systems and Computer Architecture.
Relationship between advanced computer architecture and implementation of modern operating systems. Processor modes and context switching, memory management, input/output, exception handling, process scheduling, paging, and swapping. Modern operating systems, such as UNIX and/or VAX/VMS, used to provide examples of these ideas.
Prerequisite: CSCI 215
Credit: 3 Hours.

385. Artificial Intelligence.
Data structures and algorithms required to simulate human intelligence with computers. Knowledge representation, search algorithms, games, predicate calculus and resolution, unification, rule-based systems, learning and brief introduction to neural networks. LISP-like language used for projects. Offered alternate years.
Prerequisite: CSCI 215
Credit: 3 Hours.

410. Compiler Design.
Design and implementation of language translators. Lexical analysis and regular expressions; context-free grammars and parsing algorithms; syntax-driven translation; intermediate code representations; code generation; and optimization techniques. Offered alternate years.
Prerequisite: CSCI 310
Credit: 3 Hours.

420. Systems Development Project.
Senior-level departmental capstone course. teams of students construct a completely operational system. Course project responds to the actual needs of some manufacturing, retail or service organization.
Prerequisite: Written permission of instructor
Credit: 3 Hours.

422. Theoretical Foundations of Computing.
Various mathematical models for computation. Nature of computation, finite automata and grammars, solvable and unsolvable problems, formal semantics, proving program correctness, and nondeterminism. Offered alternate years.
Prerequisite: CSCI 310
Credit: 3 Hours.

430. Expert Systems.
Choosing, creating and evaluating expert systems and their shells. Emphasizes developing systems that exploit backward chaining rules and that permit assignment of confidence levels to rule-based systems. Offers students experience in linking inference engines developed with expert systems shells (such as M.1) to modules written in more traditional programming languages (e.g., C). Inductive systems and non-rule-based systems discussed.
Prerequisites: CSCI 305 or any 300-level CSCI course.
Credit: 3 Hours.