CS 150. Computer Technology. 3(1, 2).
A one-semester course for undergraduates from all disciplines, which explores the nature and history of computer, their impact on society, networks, cybersecurity, and their use in various disciplines and careers. This course involves one hour of lecture and two hours of structured laboratory each week. The lab segment introduces students to selected popular applications such as spreadsheets and web page development software and cybersecurity hands-on exercises. Prerequisite: None.
CS 151. Introduction to Computer Science. 3(1, 2).
This course is an introductory survey of computer science. It explores the breath of the subject while including enough depth to convey an honest appreciation for the topics involved. This course explores the nature and history of computers, their impact on society, algorithms, computer organization, computing systems, and numerical methods. This course involves one hour of lecture and two hours of structured laboratory each week. The lab segment introduces students to programming using Linux and Python. Students use Raspberry PI and/or other kits for developing and testing their programs. Prerequisite: None (F, S)
CS 160. Programming I 4(2, 2).
This is the first programming course in the Computer Science sequence. It introduces students to programming with a structured programming language. Emphasis is on problem solving methods and algorithm development; definition of language syntax and semantics; and development of ability to apply concepts by designing coding, debugging, documenting, and executing programs. Topics include data types, variables, assignment, control structures (branching and looping). This course involves two hours of lecture and two hours of structured laboratory each week. Prerequisites: CS 151 or consent of instructor (F, S)
CS 161. Introduction to Programming. 3(2,1).
An introduction to programming with a structured language on a standard computer system. Currently, we use C++ language and the UNIX operating system; but the choice of language and operating system depend on availability and currency. Emphasis is on understanding the various programming concepts. Some of the programming concepts include: syntax, semantics, declarations, variables, input/output, formatting, selection, loops, subprograms, documentation, software engineering, and scope. Students apply those concepts by writing simple programs in the given language. This course involves two hours of lecture and one hour of structured laboratory each week. Prerequisite: None. (F,S)
CS 170. Programming II 4(2,2).
This course is a continuation of CS 160 and develops object-oriented programming. Topics include file input/output, inheritance, arrays, pointers, recursion, exceptions, and error handling. Additional topics will introduce students to data structures such as lists, stacks, and queues and to searching and sorting algorithms. This course involves two hours of lecture and two hours of structured laboratory each week. Prerequisites: CS 160 (F, S)
CS 171. Introduction to Object-Oriented Programming 3(3,0).
Classes and objects are introduced using I/O streams as built-in classes and objects. User-defined classes and objects, and abstract data types are also studied. Other topics include inheritance, overloading, one- dimensional arrays, multidimensional arrays, strings, pointers, recursion, templates, and exception-handling. Prerequisite: CS 161. (F,S)
CS 201. Computer Programming I. 3(3,0).
An introduction to problem solving methods and algorithms using object-oriented design. The ourse covers the graphical representations such as ClassObject diagrams, UML diagrams, and Interaction diagrams to help students understand problem representation and problem-solving using the OO approach. Special consideration is given to algorithms on basic problem representations such as arrays and strings. Graphical user Interface and applets are also a part of the course. Prerequisite: CS 171. (F, S)
CS 202. Computer Programming II. 3(3,0).
This course offers advanced topics related to the object-oriented and multithread programming. Topics include multi-thread programming, object serialization, message handling, and network oriented programming. Internet programming and the related event driven programming are a part of the course. Prerequisite: CS 201. (F,S)
CS 205. Scientific Programming. 3(3, 0).
An introduction to scientific programming using a computer language such as FORTRAN, Mathematica, Visual Basic and LabView. Most applications are selected from mathematics, statistics, physics, engineering and other sciences. Topics include operating system fundamentals (UNIX, Windows and/or VMS), data types, arithmetic, structured selection, structured loops, input/output, sequential files, formatting, statement functions, subroutines, functions, arrays, matrices, character manipulation. Prerequisite: CS 160. (F, S)
CS 209. Business Programming. 3(3, 0).
Introductory computer programming course using a structured or object oriented programming language to solve business problems. This course will introduce: algorithm concepts and development; structured or object oriented programming methodologies; language syntax; graphical interface design and event based programming. Prerequisite: CS 160 orCS 161. (F)
CS 210. Advanced Business Programming. 3(3, 0).
A continuation of CS 209, emphasizing structured programming in a business-oriented language and management of files. Details on structures on disks, including sequential access, index sequential, and random access. Commonly used routines, including sorting, merging, and table-handling. Prerequisite: CS 209. (S)
CS 240. Computer Science Cooperative Education/Internship. 6(6, 0).
A supervised learning experience in an approved private or government facility. Students must be employed full-time for at least one semester and must perform supervised work that will enhance their educational background in an area related to computer science. It provides students the opportunity to apply computer science in industry, business, military, government, or other services. It allows early exposure to the work environment while engaged in the learning process, and lets students examine their career choices. In addition to the supervisors evaluation in the field, students performance the field, students' performance will be based upon a portfolio, a written report and an oral presentation. Prerequisite: CS 170 or CS 171. (F, S)
CS 260. Programming III. 4(2, 2).
This course introduces the study of programming language specifications and provides students with knowledge of various concepts. Topics include lexical structure, syntax, semantics, and pragmatics (idioms, common uses) of programming languages; Stages of compilation, linking and execution; Strings, arrays, structures, pointers, and memory management; library functions; tools for design, maintenance, and debugging of programs; separate compilation, modular programming; integrated development environments. This course involves two hours of lecture and two hours of structured laboratory each week. Prerequisite: CS 170. (F, S)
CS 280. Data Structures. 3(3, 0).
Basic concepts of abstract Data Types and their applications in problem solving. Recursion and its applications in problem solving. Abstract models for elementary data structures, array, list, stack, queue, tables and their implementations. Various applications of these data structures in the area of computer science. Prerequisite: CS170. (F, S)
CS 300. Computer Logic. 3(3, 0).
A study of the mathematical foundations of Computer Science, with emphasis on number representation and hardware design logic. Topics include: data representation, unsigned and signed integers and real numbers, base conversions of numbers; sets and Venn diagrams; Boolean algebra and its application to gates and circuit designs; simplifying circuits using Karnaugh maps; flip flops, simple combinatorial and sequential circuits. Prerequisite: CS 160 or CS 201.(F, S)
CS 301. Introduction to Computer Systems. 3(3, 0).
Introduction and overview of computer systems. Binary representation of information. Digital logic structures. The basic von Neumann model of computer. Machine instructions. Assembly language elements and programming techniques: instructions, I/O routines, traps, subroutines, using stacks. Programming in a high-level language. Control structures. Functions. Recursion. I/O operations. Machine implementation of these high-level language features. Prerequisite: CS (F, S)
CS 304. Introduction to Computer Organization. 3(3, 0).
An introduction to the hardware construction of digital computers and their major components. Topics include register transfer language, instruction codes and their hardware implementation (shift registers, arithmetic, branching), microprogrammed control, types of addressing and instruction formats, comparison of RISC/CISC computers. Prerequisite: CS 300. (F, S).
CS 307. Introduction to File Processing. 3(3, 0).
The techniques of structuring data on bulk storage devices. Sequential and direct access files, file management techniques. Algorithms for manipulating linked lists, trees, and other file organization. Prerequisite: CS 170 or CS 202.
CS 308. Data Structures and Algorithms Analysis. 3(3, 0).
Abstract data types are used as mathematical models for elementary data structures, including records, lists, linked lists, queues, stacks, and trees. Each is analyzed for speed, memory usage, simplicity, pitfalls, and is compared to other data structures. Some applications include searching, sorting and merging. Prerequisite CS 202. (F, S)
CS 318. Organization of Programming Languages 3 (3, 0).
Evolution, classification and evaluation of Programming Languages, formal language theory, syntax, semantics, pragmatics. Design and implementation issues. Different language models. Study of languages from different models. Prerequisites. CS 280 (F, S)
CS 320. Analysis of Algorithms. 3(3, 0).
Basic concepts of efficiency of an algorithm. Notion of BigO and SmallO for space and time requirements. Mathematical techniques for computing time and space requirements for algorithms. Various sorting, searching, advanced tree and graph algorithms and their analysis. Some discussion of complexity classes as well as the nature of NP-completeness and intractability. Prerequisites: CS 280 (F, S)
CS 323. Artificial Intelligence. 3(2, 1).
The concept of intelligence and intelligent systems, both biological and non-biological is the main focus of this course. Embodied and disembodied intelligence along with human intelligence are discussed. In addition to theoretical knowledge, and integral part of the course is work in the laboratory. Students learn to program robots and other intelligent agents. Prerequisite: CS 308 or CS 280. (S)
CS 324. Introduction to Computability, Languages, and Automata. (3, 0).
An introduction to the theoretical foundations of computer science. Topics include mathematical foundations of computing, computer tapes (finite-state, pushdown, turing), the Chromsky language hierarchy, automata computations, unsolvable problems, and halting problems. Prerequisite: CS 170 and M 315.
CS 350. Social Implications of Computing. 1(1, 0).
A study of the social influences of computers and technology on society. Includes: computer ethics, professional responsibility, intellectual property, privacy, access, and the law. Prerequisites: CS 170 or CS 202.(F, S).
HCS 399. Honors Topics In Computer Science. 3(3, 0).
A special topics seminar for junior honor students with at least a 3.250 cumulative grade point average and a 3.000 GPA in computer science. Its purpose is to allow the occasional offering of advanced related topics not adequately covered in any regular course available to qualified students of the Department of Mathematics and Computer Science. Prerequisite: Permission by the instructor.
CS 401. Operating Systems. 3(3, 0).
A study of the evolution of operating systems. Topics include control of input/output, interrupts, job and CPU scheduling, process synchronization, starvation, deadlocks, recovery, memory management and process management. Prerequisite: (CS 304 and CS 308) or (CS 304 and CS 280). (F, S)
CS 402. Numerical Analysis I. 3(3, 0).
A study of numerical methods for solving linear systems of equations, solution of transcendental equations and polynomial equations. Error analysis, convergence of numerical algorithms and iterative methods. Numerical methods of evaluating definite integrals. Approximate methods of solving systems of equations. Prerequisite: (CS 160 or CS 161) and M 163. (F)
CS 403. Numerical Analysis II. 3(3, 0).
A study of numerical methods for solving boundary value problems in ordinary differential equations. Error analysis and convergence of numerical algorithms. Interpolation and numerical differentiation. Smoothing of data and method of least square. Solution of systems of differential equations. Prerequisite: CS 402. (S)
CS 405. Software Engineering. 3(3, 0).
Formal techniques in software design, development, testing, and implementation of largescale software projects. Students work in teams to experience organization, specifications, design, implementation, and testing of a large software project. Prerequisite: CS 308 or CS 280. (F, S)
CS 411. Database Management System Design. 3(3,0).
Introduction. Data modeling: the Entity-relationship and Relational Models. Relational algebra and calculus. SQL and queries. Database application development: embedded SQL, cursors, SQLJava. Internet applications: TML, XML, three-tiered architectures. Physical database design: disks, file organization. Indexing: tree structures and hash indexing. Query evaluation and optimization. Schema refinement and normalization. Physical database design and tuning. Transaction management. Concurrency control. Database security. Overview of advanced topics: data mining, multimedia databases. Prerequisite: CS 318. (F, S)
CS 417. Compiler Theory. 3(3, 0).
The formal treatment of programming language translation and compiler design. Emphasis will be placed on the theoretical aspects of parsing, context-free languages, translation specifications, and machine-independent code improvement. Students will be assigned programming projects to give them experience with the various concepts. Prerequisite: CS 318 and CS 324. (S)
CS 418. Computer Graphics. 3(3, 0).
Overview of computer graphics. Graphical display systems and graphic primitives. 2D drawing primitives. Programming line-drawing applications with OpenGL. Window-to-viewpoint transformation for display. Clipping. Vectors, vector operations and affine transformations. 3D transformations. Drawing 3D objects using OpenGL. Tools for viewing and animation of 3D scenes. Development of classes for 3D drawing and animation. Advanced topics: ray tracing, visualization, multimedia. Prerequisite: CS 308 or CS 280. (S)
CS 420. Computer Networks. 3(3, 0).
The fundamentals of computer networks and current methods and practices in using computer networks. Topics include physical elements, architectural elements, information layering, diagnostics, design, operational performance measurement tools, communication protocols, datalinking, switching, routing, data security, and LANS. Prerequisite: CS 304. (F, S)
CS 444. Capstone Assessment and Professional Development. (1, 0).
This course will focus on professional development activities such as invited speaker series, team work, communication and others. This will also focus on capstone assessment activities such as review sessions for Major Field Test and Senior Exit Examination and administration of these examinations. Prerequisites: Senior standing and permission by the instructor (S)
CS 460. Senior Project. 3(3, 0).
Provides students the opportunity and experience to do independent research under the guidance of a computer science faculty member. Students may choose to do research in (but not restricted to) one of the following areas: networks, compiler theory, graphics, computer architecture, embedded systems, numerical methods, systems analysis and design, operating systems, artificial intelligence, and games. This course will enable students to apply knowledge and skills acquired from computer science and related courses towards accomplishing a productive design project. Prerequisite: Permission by the instructor.
CS 480. Introduction to Robotics. 3(2, 1).
This course offers knowledge of a special type of intelligent systems, robots. Among many approaches toward robotics the course concentrates on cognitive and behavior-based robotics. An integral part of the course is working in the laboratory. Students learn to control real robots and to build simple robot controllers. Prerequisite: CS300, and CS323. (F)
CS 495. Biocomputing and Bioinformatics 3(3, 0).
This course covers information processing in biological cells. Among other standard issues of information processing, this course considers system software in biological systems, string processing, and manufacturing. This course also provides knowledge of techniques of bioinformatics as a career oriented discipline within computer science, including digital encyclopedias and bioinformatics websites. Prerequisite: CS170 or CS 202 (F)
CS 496. Neuroinformatics and Brain-Computer Interface 3(2,1).
This course covers information processing systems in neural systems. It includes neurocomputing on neuron level, cognitive processing on brain level, neuroinformatics websites, artificial neural architectures, biosignal processing, brain-computer interface, and brainrobot interface. Laboratory work with biosignals is part of the course. Prerequisite: CS 170 or CS 202. (S)
HCS 498. Senior Honors Thesis. 3(3, 0).
Provides an opportunity for the student to do intensive independent study and research under the direction and supervision of a faculty member, including the writing of a thesis. Enrollment may be split between two semesters, but no grade will be given until completion of the thesis. This course is open only to senior honor students majoring in computer science with at least a 3.25 cumulative grade point average and a 3.00 GPA in computer science, and have shown a marked capability for independent study. Prerequisite: Permission by the instructor.
CS 499. Special Topics in Computer Science. 1-3(1-3, 0).
Study of a special topic in Computer Science, relevant to the current state of the art, not covered in other courses. Topics are offered as needed or requested. Some of the topics are Parallel and Distributed processing, Wireless Networking, Sensor AdHoc Networks, Web Page Design, Fuzzy Logic and Neural Networks, Computer Security, Advanced Digital Design, High Performance Computing and Embedded Systems. Students may repeat this course with different topics as additional electives toward their graduation, up to a maximum of six credits. Prerequisite: Permission by the instructor. (F, S)