School of Undergraduate Studies
Course Descriptions—Computer and Information Science (CMIS)
CMIS 102 Introduction to Problem Solving and Algorithm Design (3)
A study of techniques for finding solutions to problems through structured programming and step-wise refinement. Topics include principles of programming, the logic of constructing a computer program, and the practical aspects of integrating program modules into a cohesive whole. Algorithms are used to demonstrate programming as an approach to problem solving, and basic features of a modern object-oriented language are illustrated. Students may receive credit for only one of the following courses: CMIS 102, CMIS 102A, or CMSC 101.
CMIS 141 Introductory Programming (3)
(Not open to students who have taken CMIS 340. The first in a sequence of courses in Java.) Prerequisite: CMIS 102 or prior programming experience. Recommended: MATH 107. A study of structured and object-oriented programming using the Java language. Discussion covers the discipline, methodologies, and techniques of software development. Algorithms and simple data structures are developed and implemented in Java; objectoriented concepts are applied. Students may receive credit for only one of the following courses: CMIS 141, CMIS 141A, or CMSC 130.
CMIS 160 Discrete Mathematics for Computing (3)
(Not open to students who have completed CMSC 150.) Recommended: MATH 107. An introduction to discrete mathematical techniques for solving problems in the field of computing. Basic principles from areas such as sets, relations and functions, logic, proof methods, and recursion are examined. Topics are selected on the basis of their applicability to typical problems in computer languages and systems, databases, networking, and software engineering.
CMIS 170 Introduction to XML (3)
Prerequisite: CMIS 102. A study of the principles and use of Extensible Markup Language (XML). Discussion covers the structure, transformation, presentation, and implementation of XML technologies, including document type definitions (DTDs), Extensible Style Language for Transformation (XSLT), and schemas. Hands-on projects and exercises are provided.
CMIS 241 Data Structures and Abstraction (3)
Prerequisite: CMIS 141 or CMIS 141A. A study of program design and the implementation of abstract data types in Java. Topics include data structures such as stacks, queues, lists, and trees and algorithms used for sorting and searching.
CMIS 242 Intermediate Programming (3)
Prerequisite: CMIS 141 or CMIS 141A. Further study of the Java programming language. Topics include inheritance, interfaces (such as graphical user interfaces), exceptions, arrays, and collections. Emphasis is on using existing Java classes to build and document applications.
CMIS 310 Computer Systems and Architecture (3)
(Not open to students who have completed CMSC 311.) Prerequisite: CMIS 102 or CMIS 102A. A study of the fundamental concepts of computer architecture and factors that influence the performance of a system. Topics include data representation and the design and analysis of combinational and sequential circuits. Focus is on how basic hardware components (multiplexers, decoders, memories, arithmetic-logic units, etc.) are built. Discussion covers hard-wired and microprogrammed design of control units and concepts such as pipelining and memory hierarchy. Students may receive credit for only one of the following courses: CMIS 270, CMIS 310, CMSC 311, or IFSM 310.
CMIS 315 Programming and Application in C++ (3)
Prerequisite: CMIS 102 or CMIS 102A. A one-semester study of the important features of the C++ programming language. Programming projects in C++ are included. Students may receive credit for only one of the following courses: CMIS 240 or CMIS 315.
CMIS 320 Relational Databases (3)
Prerequisite: CMIS 102 or CMIS 102A. A study of the functions and underlying concepts of relationally organized database systems. Discussion covers data models and their application to database systems. The entity/relationship (E/R) model and Codd’s relational theory—including relational algebra, normalization and integrity constraints, and the Structured Query Language (SQL)—are emphasized. Physical design and data administration issues are addressed. Projects include hands-on work with E/R and relational models (using industry standard database software). Students may receive credit for only one of the following courses: CMIS 320 or IFSM 410.
CMIS 325 UNIX with Shell Programming (3)
Prerequisite: CMIS 102 or CMIS 102A. A study of the UNIX operating system. Topics include file structures, editors, patternmatching facilities, shell commands, and shell scripts. Shell programming is presented and practiced to interrelate system components. Projects give practical experience with the system.
CMIS 330 Software Engineering Principles and Techniques (3)
Prerequisite: CMIS 141, CMIS 141A, CMIS 315, or CMIS 340. A study of the process of software engineering from initial concept through design, development testing, and maintenance to retirement of the product. Development life-cycle models are presented. Topics include issues in configuration management, integration and testing, software quality, quality assurance, security, fault tolerance, project economics, operations, human factors, and organizational structures. Students may receive credit for only one of the following courses: CMIS 330 or CMIS 388A.
CMIS 335 Software Safety (3)
Prerequisite: CMIS 330. An examination of software safety problems (including specification errors, design/coding flaws, or lack of generic safety-critical requirements) that can contribute to or cause a system failure. The objective is to provide management and engineering guidelines to achieve a reasonable level of assurance that software will execute with an acceptable level of safety risk. Potential system hazards are analyzed as functional or generic and traced to either the software or the environment in which the software is used. Guidance on developing a process that can identify, analyze, and then prove, eliminate, or mitigate such potential system hazards according to priority is provided. Students may receive credit for only one of the following courses: CMIS 335 or CMIS 398S.
CMIS 340 Programming in Java (3)
(Not open to students who have taken CMIS 141, CMIS 241, or CMIS 242.) Prerequisite: CMIS 102 or CMIS 102A. A one-semester study of the important features of the Java programming language. Topics include an introduction to Java syntax, class libraries, graphical user interfaces, input and output, threads, and applet programming. Programming projects in Java are included.
CMIS 345 Object-Oriented Design and Programming (3)
Prerequisite: CMIS 241, CMIS 242, or CMIS 340. An examination of the principles, practices, and applications of programming in an object-oriented environment. Assignments include programming projects in Java that implement techniques of object-oriented design.
CMIS 355 Database Forms (3)
(Formerly CMIS 398F.) Prerequisite: CMIS 320. A comprehensive study of the design and development of graphical user interface forms for modern relational databases in the client/ server environment. Focus is on developing a hierarchy of form applications using both Microsoft Access and Oracle. Topics include the construction of simple forms using drop-and-drag components and advanced features of vendor form-building products. Some Visual Basic and PL/SQL programming is used to provide robust functionality to the forms. Accurate display and processing of data and user friendliness are stressed. Students may receive credit for only one of the following courses: CMIS 355 or CMIS 398F.
CMIS 370 Data Communications (3)
Prerequisite: CMIS 310. Investigation of the effects of communication technology on information systems. Topics include components of communication systems, architectures and protocols of networks, security measures, regulatory issues, and the design of network systems. Discussion also covers issues and applications in local area networks and communication services. Students may receive credit for only one of the following courses: CMIS 370, CMSC 370, or IFSM 450.
CMIS 375 Programming in Perl (3)
Prerequisite: CMIS 102 or CMIS 102A. An introduction to the Perl scripting language. Focus is on the basic features of Perl (including data and variable types, operators, statements, regular expressions, functions, and input/output). Topics include objectoriented programming and Common Gateway Interface (CGI) programming. Assignments include writing Perl scripts. Students may receive credit for only one of the following courses: CMIS 375 or CMIS 398P.
CMIS 398A Programming in C# (3)
Prerequisite: CMIS 240, CMIS 241, CMIS 242, CMIS 340, or CMIS 315. An examination of the features of the C# programming language. Topics include design of classes, class libraries, exception handling, input and output, and Windows forms and Web forms programming. Assignments include programming in C#.
CMIS 415 Advanced UNIX and C (3)
Prerequisites: CMIS 141 (or CMIS 141A, CMIS 315, or CMIS 340) and 325. An investigation of the interaction between the UNIX operating system and the C programming language. The features of UNIX that support C (including library and system calls, UNIX utilities, debuggers, graphics, and file structure) are presented. Assignments include programming projects in C that implement UNIX command features.
CMIS 420 Advanced Relational Databases (3)
Prerequisite: CMIS 320. A study of advanced logical and physical design features and techniques of relational databases appropriate to the advanced end user, database designer, or database administrator. Topics include object-relational concepts, data modeling, challenge areas, physical design in relation to performance, and relational algebra as a basis of optimizer strategies. Future trends, advanced concurrency control mechanisms, and maintenance issues such as schema restructuring are addressed. Projects include hands-on work (using industry-standard database software) in designing and implementing a small database, creating triggers, loading through forms and utility, querying through interactive and embedded Structured Query Language (SQL), restructuring schema, and analyzing performance. Students may receive credit for only one of the following courses: CMIS 420, IFSM 411, or IFSM 498I.
CMIS 435 Computer Networking (3)
Prerequisite: CMIS 370. An overview of communications topics such as signaling conventions, encoding schemes, and error detection and correction. Emphasis is on routing protocols for messages within various kinds of networks, as well as on methods that network entities use to learn the status of the entire network. Students may receive credit for only one of the following courses: CMIS 435 or CMSC 440.
CMIS 440 Advanced Programming in Java (3)
Prerequisite: CMIS 241, CMIS 242, or CMIS 340. An exploration of advanced Java Enterprise applications. Topics include Java server pages, servlets, Java database connectivity, and Enterprise JavaBeans. Students may receive credit for only one of the following courses: CMIS 440 or CMIS 498A.
CMIS 445 Distributed Systems (3)
Prerequisite: CMIS 141, CMIS 141A, CMIS 315, or CMIS 340. Recommended: CMIS 325. An examination of the concepts and design principles of distributed computer systems. Topics include communications, operating systems, interprocess communications, distributed objects, simple object access protocol (SOAP), Web services, distributed file systems, name services, time services, distributed multimedia systems, security, transactions, and replication (as they relate to the distributed system environment). Discussion also covers standards for distributed objectoriented programming. A distributed programming project in Java illustrates many of the concepts. Students may receive credit for only one of the following courses: CMIS 445 or CMSC 445.
CMIS 455 Requirements Development (3)
Prerequisite: CMIS 330. A study of concepts and techniques for planning and developing high-quality software products. Fundamentals of specification (including formal models and representations, documents, and standards) are examined. Discussion also covers methods of specifying and developing requirements for generating software. Projects using these techniques are included. Students may receive credit only once under this course number.
CMIS 460 Software Design and Development (3)
Prerequisite: CMIS 330. An in-depth treatment of the concepts and techniques for designing and developing software for large projects. Discussion covers design strategies, principles, methodologies, and paradigms, as well as evaluation and representation. Topics also include architectural models and idioms, development tools and environments, implementation guidelines and documentation, and organization of design and development functions. Issues of program quality, program correctness, and system integration are addressed. Project work incorporates principles and techniques of software design and development.
CMIS 465 Software Verification and Validation (3)
Prerequisite: CMIS 330. A study of tools, methods, and current practices for assessing the quality and correctness of software. Topics include the roles of testing and formal verification, fundamentals and formal models of program 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.
CMIS 485 Web Database Development (3)
(Formerly CMIS 498B.) Prerequisites: CMIS 320, knowledge of relational database design and SQL, and programming language experience. Recommended: CMIS 340 or CMIS 241. An exploration of an assortment of current Web technologies and programming language options used to interface a relational database to a Web server. Technologies such as CGI/Perl, Active Server Pages, and Java are utilized in the lab. The three-tiered architecture is studied in depth via a number of hands-on activities and projects. Students may receive credit for only one of the following courses: CMIS 485 or CMIS 398B.
CMIS 486A Internship in Computer Information Science Through Co-op (3)
Prerequisite: Formal admission to the Co-op program (program requirements are listed on p. 247). An opportunity to combine academic theory with new, career-related experience in computer and information science. At least 12 hours per week must be devoted to new tasks for a total of 180 hours during the Co-op session; four new tasks must be delineated in the Learning Proposal; and the course requirements must be completed. May be repeated upon approval of a new Learning Proposal that demonstrates new tasks and objectives related to computer and information science and that continues to advance application of academic theory in the workplace. Students may earn up to 15 credits in all internship coursework through Co-op toward a first bachelor’s degree and up to 9 credits toward a second bachelor’s degree. Co-op credits may not be used for general education requirements and, unless otherwise specified, no more than 6 Co-op credits may be used in the academic major and minor (combined).
CMIS 486B Internship in Computer Information Science Through Co-op (6)
Prerequisite: Formal admission to the Co-op program (program requirements are listed on p. 247). An opportunity to combine academic theory with new, career-related experience in computer and information science. At least 20 hours per week must be devoted to new tasks for a total of 300 hours during the Co-op session; five to eight new tasks must be delineated in the Learning Proposal; and the course requirements must be completed. May be repeated upon approval of a new Learning Proposal that demonstrates new tasks and objectives related to computer and information science and that continues to advance application of academic theory in the workplace. Students may earn up to 15 credits in all internship coursework through Co-op toward a first bachelor’s degree and up to 9 credits toward a second bachelor’s degree. Co-op credits may not be used for general education requirements and, unless otherwise specified, no more than 6 Co-op credits may be used in the academic major and minor (combined).
CMIS 498 Special Topics in Computer and Information Science (3)
Prerequisites: Vary according to topic. A seminar on topics in computer and information science. May be repeated to a maximum of 6 credits when topics differ.