CS 100 Introduction to Computing: An introduction to computer systems, hardware, and software, covering practical applications of computers in society. The course will use standard microcomputer software packages and access external databases to focus on information collection, analysis, and presentation. Two projects will provide the opportunity for a student to show an understanding of the concepts. Acceptable for credit in the Faculty of Arts and the Departments of Human Kinetics and Human Nutrition. Credit will be granted for only one of CSCI 100, CSCI 235, CHEM 375; INFO 131 or 101. Six credits. (Not Offered 2013/14)
CS 140 Understanding Computing and Computer Technology: A basic introduction to computing and modern computer technology. Topics include the history of computing; problem solving and programming basics; the components of the computer; how a computer works; how the Internet works; databases; artificial intelligence; privacy and security; social issues in computing. No prior background is assumed. Six credits.
CS 125 Computer Programming in C: Cross listed as Engr 144 Computer Programming for Engineers and CS 161 Introduction to Programming. Using C/C++ language, this course introduces the fundamental principles of computer programming for solving engineering problems. Topics include flow control, modularity, structured programming, algorithms for searching and sorting, and the conversion of these algorithms to C/C++ programs, with the necessary testing and debugging. Three credits and two-hour lab.
CS 161 Introduction to Programming: An introduction to computers, algorithms and programming. Topics include problem analysis, algorithm development, data representation, control structures, arrays, and file manipulation. Three credits and a two-hour lab. Cross listed as Engr 144 and CSCI 125.
CS 162 Programming and Data Structures: Continuing from the material in CSCI 161, this course covers memory management and data abstraction via classes and objects, and introduces the linear data structures lists, stacks, and queues. Structured programming is encouraged via modular development. Prerequisite: CSCI 161. Three credits and a two-hour lab.
CS 235 Micro-Computers in Science: An introduction to the hardware, operating systems and utilities of microcomputers. Typical micro-computer applications include word processing, spreadsheets, and database management systems. Examples and applications are taken from the sciences. Restricted to students in the Faculty of Science. Credit will be granted for only one of CSCI 100, CSCI 235, CHEM 375, INFO 131 or 101. Three credits and a two-hour lab.
CS 255 Advanced Data Structures: Linear data structures such as lists, stacks, and queues are reviewed. Objects are introduced using C++ classes and templates. Multi-linked lists and trees together with their fundamental algorithms are covered. Searching, sorting, and hashing are described and implemented in C++. Prerequisite: CSCI 162. Three credits and a two-hour lab.
CS 263 (previosuly CS 365) Computer Organization: This course covers basic computer arithmetic, architectures, and instruction sets; in-depth study of the central processing unit, memory and input/output organization; and microprogramming and interfacing. Prerequisite: CSCI 255. Three credits and a two-hour lab.
CS 275 Database Management Systems: An introduction to the theory associated with the design and implementation of databases. Topics include database models (relational model in detail), design, normalization, SQL, and a DBMS (ORACLE). Prerequisite: CSCI 255. Three credits and a two-hour lab. Not offered 2013/14.
CS 335 Operations Research: The course will cover selected topics from linear programming; transportation and assignment models; networks; scheduling; inventory models; decision-making; queuing theory; forecasting and simulation. Packaged software and spreadsheets will be used. Prerequisites: MATH 112; CSCI 125 or 161. Three credits.
CS 345 Computer Graphics: Covers fundamental mathematical, algorithmic, and representational issues in computer graphics. Topics include graphics programming, geometrical objects and transformations, 2-D and 3-D data description, manipulation, viewing projections, clipping, shading and animation. Prerequisites: MATH 253; CSCI 255. Three credits and a two-hour lab. Not offered 2013/14.
CS 355 (previously CS 256) Data Structures and Algorithm Analysis: Analysis and design techniques are applied to non-numeric algorithms for data structures. Algorithmic analysis is used to select methods of manipulating data. Prerequisite: CSCI 255; MATH 277. Three credits and a two-hour lab. Not offered 2013/14.
CS 356 Theory of Computing: An introduction to the theoretical foundations of computer science, examining finite automata, context-free grammars, Turing machines, undecidability, and NP-completeness. Abstract models are employed to help categorize problems as undecidable, intractable, tractable, and efficient. Prerequisites: CSCI 256; MATH 277. Three credits.
CS 368 (previously CS 465) Data Communication Systems and Network: This course covers communication systems; environments and components; common carrier services; network control, design and management; distributed and local networks. Prerequisite: CSCI 365. Credit will be granted for only one of CSCI 465 and INFO 465. Three credits and a two-hour lab.
CS 375 Operating Systems: An overview of operating systems functions: file management, CPU scheduling, process management, synchronization, memory management, and deadlock handling. UNIX will be introduced and used in this course. Prerequisite: CSCI 365. Three credits and a two-hour lab.
CS 383 Object-Oriented Programming and Design: An in-depth study of the object-oriented programming paradigm. Topics include objects, messages, classes; inheritance, polymorphisms, encapsulation; pure and hybrid languages; object-oriented problem solving. Concepts will be practiced with C++. Prerequisite: CSCI 255. Three credits and a two-hour lab. Not offered 2013/14.
CS 455 Parallel Computing: Architecture, Algorithms and Applications: Introduces parallel programming techniques as a natural extension to sequential programming. Students will learn techniques of message-passing parallel programming; study problem-specific algorithms in both non-numeric and numeric domains. Topics will include: numeric algorithms; image processing and searching; optimization. Prerequisites: CSCI 255, 365. Three credits and a two-hour lab.
CS 467 Computer and Network Security: Covers the theory and practice of computer and network security, including cryptography, authentication, network security, and computer system security. Topics include secret and public key cryptography; message digests; authentication, including password-based, address-based, and cryptographic; network security; system security, including intruders, malicious software, and firewalls. Students will use and implement algorithms. Prerequisite: CSCI 465. Three credits. Not offered 2013/14.
CS 471 Topics in Computer Science: This course explores current topics in computer science, such as interface design, real-time control, and simulation. Three credits. Topic for 2013/14: Mobile Application Development: A mobile application (or mobile app) is a software application designed to run on smartphones, tablet computers and other mobile devices. The android mobile platform has become one of the most popular mobile platforms used by millions around the world. This course introduces application development for the Android OS that can run on mobile devices. The course covers the Android system, the Android development tools, how to create user interfaces in Android, and how to create Android apps that use databases, location, and networking. Prerequisite: CSCI 162 or a programming course.
CS 483 Interactive Programming with Java: This course introduces the object-oriented language Java and its application to interactive programming. Topics include Java syntax and object inheritance structure, exception handling, GUI and Applet programming, Java networking and multithreading. Prerequisite: CSCI 375 completed or concurrent. Credit will be granted for only one of CSCI 483 and INFO 335. Three credits and a two-hour lab. Not offered 2013/14.
CS 485 Software Design: The course covers techniques for the design and management of large software projects, including structured programming, debugging, and testing methodologies. Examples of large systems will be provided and a programming project will be completed. Prerequisite: CSCI 375, completed or concurrent. Cross-listed as ENGR 252. Three credits and a two-hour lab.
CS 487 Organization of Programming Languages: Topics include structure of language definitions; control structures; data types and data flow; compilers vs. interpreters; introduction to lexical analysis and parsing. Prerequisite: CSCI 365. Three credits and a two-hour lab.
CS 491 Senior Seminar: Cross-listed as MATH 491 and STAT 491. The purpose of this non-credit course is to assist students in carrying out research, composition, and oral presentation. Students will present a project topic in the fall term and their project in the spring. Attendance at departmental seminars is mandatory. No credit.
CS 493 Senior Thesis: Students will prepare and present a thesis based on original research conducted under the supervision of a faculty member. Three credits.
CS 495 Artificial Intelligence: An introduction to the core concepts of artificial intelligence, including state space, heuristic search techniques, knowledge representation, logical inference, uncertain reasoning, and machine learning. Specific methods covered include neural networks, genetic algorithms, and reinforcement learning. Prerequisite: CSCI 255. Three credits and a two-hour lab. Not offered 2013/14.






