<Course name="CS105"> <Title=" CS 105: Introduction to Computer Concepts "/> <Description>This course presents an overview of the role of computers in society--their application and misapplication, their capabilities and limitations. Applications may include artificial intelligence, medical, aerospace and business uses of computers. Computer hardware and associated technologies will be discussed. Computer programming will be taught from a non-mathematical, problem-solving point of view, the objective being an understanding of the programming process, rather than the development of complex or extended computer programs. This survey course is not part of the computer science major sequence. Students planning to major in computer science should start with CS 110. </Description> </Course> <Course name="CS109"> <Title=" CS 109: Computer Programming for Engineers "/> <Description>An introduction to computer programming for engineering students. This course is not intended for computer science majors. Credit will not be given for both CS 109 and CS 110. </Description> </Course> <Course name="CS110"> <Title=" CS 110: Introduction to Computing "/> <Description>An introduction to computer programming--the concepts involved in using a high-level language and the program development process. The goal of this course is proficiency in the design and implementation of programs of significant size and complexity. This course is quite demanding because of the length of the programming exercises assigned. This is the first course in the computer science major sequence. It is taught using the programming language JAVA. </Description> </Course> <Course name="CS119"> <Title=" CS 119: Computer Language Supplement "/> <Description>This course addresses the dilemma of students who studied the equivalent of CS 110 in a language other than the one currently used in our CS 110 and CS 210 courses, but now need to learn the current language in order to take CS 210. Such students can, with the permission of the department, register for CS 119 for two credits. They then make arrangements to attend a section of CS 110. They are required do all the assignments, examinations, etc., of regular CS 110 students. Thus, in virtually all respects, students who register for CS 119 are really CS 110 students, except that CS 119 meets no core curriculum requirement and does not count towards any Computer Science major requirement. Students receive two credits for this course. </Description> </Course> <Course name="CS210"> <Title=" CS 210: Intermediate Computing with Data Structures "/> <Description>The design and implementation of computer programs in a high-level language, with emphasis on proper design principles and advanced programming concepts, including dynamic data structures and recursion. Efficient design, implementation and debugging techniques are stressed. The assignments are designed to introduce the student to a variety of topics in computing: data structures and ADTs, Lists, Stacks, Queues, Ordered Lists, Binary Trees, and searching and sorting techniques. The language of instruction is JAVA. </Description> </Course> <Course name="CS240"> <Title=" CS 240: Programming in C "/> <Description>C programming for programmers already knowledgeable in some high-level language (e.g., having taken one semester of introductory programming in Pascal, JAVA, Smalltalk, Lisp, etc.). C is presented as both a general-purpose and machine-level language. Topics covered include representation of integer and character data, bitwise operations, masking, memory allocation methods, pointers, dynamic data structures, file I/O, separate compilation, program development tools and use of debuggers. </Description> </Course> <Course name="CS241"> <Title=" CS 241: Computer Architecture and Organization "/> <Description>Computer hardware concepts and hardware-level programming for C programmers. Topics are: digital logic circuits, computer organization of a microprocessor system (i.e., how the CPU, memory, and I/O interface chips are interconnected to make a system), serial and parallel port interfacing, hardware programming in C and assembler, interrupt programming, device drivers. The course includes a hands-on lab meeting one hour per week. </Description> </Course> <Course name="CS310"> <Title=" CS 310: Advanced Data Structures and Algorithms "/> <Description>A systematic study of the methods of structuring and manipulating data in computing. Abstract data types. The design and analysis of algorithms. Advanced techniques for program development and organization. </Description> </Course> <Course name="CS320"> <Title=" CS 320: Applied Discrete Mathematics "/> <Description>An introduction to the mathematical structures and concepts used in computing: sets, mathematical induction, ordered sets, boolean algebras, predicate calculus, trees, relations and lattice theory, formal theory of languages and automata theory. Formal and informal theories and corresponding mathematical proofs are taught. </Description> </Course> <Course name="CS410"> <Title=" CS 410: Introduction to Software Engineering "/> <Description>This course utilizes a wide range of subject matter from its prerequisites in the implementation of a large-scale project in teams. The choice of project will vary from term to term depending on the interests of the instructor and students. Techniques for specification, design, implementation, testing and organization will be stressed. </Description> </Course> <Course name="CS420"> <Title=" CS 420: Introduction to the Theory of Computation "/> <Description>Introduction to theoretical aspects of computing including models of computation, inherent limits on computation, and feasible computation. Topics studied will include definition of computable functions (recursive functions, functions computable by Turing machines, functions computable in a programming language), unsolvability of the halting problem and related problems, the classes P and NP, finite automata, and context-free grammars. </Description> </Course> <Course name="CS430"> <Title=" CS 430: Database Management Systems "/> <Description>Databases and Database Management Systems. The entity/relationship Model. The relational model. Relational algebra. The Query Language SQL, The object-relational model and SQL3. Embedded SQL in programs and dynamic SQL. Database administration: creating views and integrity constraints, handling data security. Functional Dependencies. Normalization. Note: This course is the undergraduate version of CS 630. </Description> </Course> <Course name="CS444"> <Title=" CS 444: Introduction to Operating Systems "/> <Description>Description of current operating systems, focusing on one or two in particular. Topics include defining the operating system as distinct from hardware on one side and software systems on the other, process concepts, memory management, CPU scheduling, device management, file systems, and network support. Note: this course was previously numbered as CS 440. </Description> </Course> <Course name="CS445"> <Title=" CS 445: Real-Time Systems "/> <Description>Covers the entire development process of a real-time system, from the requirements specification and design to implementation and testing, including real-time programming, low-level software issues, and hardware architectures. Emphasizes timing constraints and scheduling principles. Subtopics include the four layers of real-time system development: real-time design methodologies, real-time design programming language constructs, real-time kernels, and real-time hardware architectures. </Description> </Course> <Course name="CS450"> <Title=" CS 450: The Structure of Higher Level Languages "/> <Description>The syntax and semantics of higher-level languages are treated. Formal specifications of syntax and models of semantics will be used. Important topics include mechanisms for parameter passing, scoping, dynamic storage allocation and systems interfacing. Both compiled and interpreted languages will be used as examples. The current language of instruction is Scheme, a dialect of LISP, which is taught in the course. </Description> </Course> <Course name="CS451"> <Title=" CS 451: Compilers I"/> <Description>Introduction to compiler organization and implementation, including formal specifications and algorithms for lexical and syntactic analysis, internal representation of the source program, semantic analysis, run-time environment issues and code generation. Students will write a compiler for a reasonably large subset of a contemporary language, targeted to a virtual machine. </Description> </Course> <Course name="CS460"> <Title=" CS 460: Graphics "/> <Description>Topics include segmentation, windows and viewports, clipping, hidden lines, geometric transforms and data structures for memory management and device independent graphics specifications. Raster graphics and the GKS and ACM Core standards will be considered. The course covers both the practice and underlying mathematical foundation for interactive graphics programming. Students need good programming skills and a mastery of linear algebra at the level required for CS 260 (Numerical Computing). </Description> </Course> <Course name="CS470"> <Title=" CS 470: Introduction to Artificial Intelligence "/> <Description>An introduction to the main techniques of artificial intelligence: state-space search methods, semantic networks, theorem-proving and production rule systems. Important applications of these techniques will be presented. Students will be expected to write programs exemplifying some of these techniques using the LISP language. </Description> </Course> <Course name="CS478"> <Title=" CS 478: Independent Study, "/> <Description>These courses allow for material not available in a standard department course offering. </Description> </Course> <Course name="CS480"> <Title=" CS 480: Special Topics "/> <Description>These courses allow for material not available in a standard department course offering. </Description> </Course> <Course name="CS498"> <Title=" CS 498: Honors Thesis "/> <Description>The design and execution of a significant research project under the guidance of a faculty advisor. Successful completion and oral defense of the Honors Thesis is necessary to qualify for Departmental Honors in Computer Science. Both the instructor and the project must be chosen and approved prior to the start of the course. Forms to enroll in this course are available in the department office. </Description> </Course>