College Catalog Course Descriptions
CSCI 102 Computing on the Web
A lecture and laboratory course designed to explore the many aspects of computing as they relate to the world wide web. Emphasis will be placed on effective development of web pages and web sites. Students will also develop a basic understanding of data communications and the Internet, web browser and web server operation and configuration, and security techniques employed by the web. This course has been designed with hands-on experience in mind. A major portion of the course will be project-based to allow students the opportunity to practice as they learn. Prerequisite MATH 114.
CSCI 110 Introduction to Computer Programming
A lecture and laboratory course which provides an introduction to structured and object-oriented programming using the high level structured language MS Visual C++. Topics include the role of a stored program, problem definition, algorithm design, coding and testing, and documentation. Applications are taught through classroom examples, laboratory exercises, and programming assignments. Object-oriented programming techniques are introduced and structured programming and top-down design are emphasized throughout the course. Weekly laboratory sessions reinforce programming techniques and the process of program design. Prerequisite: MATH 115. Each semester.
CSCI 205 Software Engineering and Elementary Data Structures
A continuation of CSCI 110, this lecture and laboratory course introduces elementary data structures and advanced programming concepts needed to solve problems that are more difficult. Software engineering principles and object-oriented concepts are studied and applied to various types of problems. Object-oriented topics include class inheritance, encapsulation, polymorphism, error handling and error recovery. Additional topics include: dynamic memory, pointers, linked lists, stacks, recursion, activation records, and binary files. Throughout the course, special focus is given to software engineering principles including abstraction, modularity, generality, portability, robustness, and internal and external documentation. Formal closed labs reinforce concepts presented in lecture, introduce methods of experimentation, and present new concepts. Prerequisite: CSCI 110 and MATH 131 (or MATH 124) or consent. Each semester.
CSCI 210 COBOL Programming (see Infrequently Offered Courses section of the Catalog)
CSCI 220 Advanced Data and File Structures
A continuation of CSCI 205, this lecture and laboratory course focuses on more advanced data structures and on the analysis of their performance. After a review of pointers, linked lists, stacks, and recursion, the following topics and their associated algorithms are studied in detail: Multi-linked lists, simulating recursion, queues, trees, and graphs. Sorting and searching algorithms are also studied and analyzed. Some file structures such as B-trees and hash files are studied. As in CSCI 205, formal closed labs are used for experimentation, to present new algorithms and concepts, to analyze and compare algorithms, and to reinforce lecture material. Homework and labs also have students apply their knowledge to new problems and produce solutions. Students work alone and within teams to develop, enhance, and analyze various algorithms. Prerequisite: CSCI 205. Spring semester.
CSCI 225 Machine Organization and Assembly Language
This lecture and laboratory course provides an introduction to the internal operations of digital computers. Topics include: computer architecture, memory control, processing, I/O devices, machine language, instruction types and format, fetch-execute cycle, timing, I/O operations, interrupt handling, data representation, basic computer arithmetic, addressing modes, and assembly language programming. Weekly laboratories will extend concepts discussed in lectures and focus on using the computer as an experimental tool. Working in teams, students will research a topic in computing and formally present their results. Prerequisite: CSCI 205. Fall semester.
CSCI 289 Special Topics
This is a course designed for individual or group study through special arrangement with a faculty member. The content and methodology will be determined by the instructor. This course can be used to incorporate new material, new technologies, and new methodologies to be introduced into the curriculum. Instructor consent.
CSCI 310 Computing in a Global Society - GS 11
Computing has brought the people of the world closer together but has also divided us in significant ways. This course will examine the development of the global computing society, compare its impact and influence on developed and developing countries, and discuss the responsibilities of those who dominate it. This course will address the effects that computing has on the global society and its individuals rather than on the technical content of computing. Laboratories will be used to illustrate and experience the disparity of computing resources among societies, the immediate and global impact of computing on the global society, and differences in how societies control access to computing resources. CSCI 310 can not be used as an elective for CSCI majors. CSCI 310 can not be used as GS11 for CSCI majors unless double majoring. See General Education Extended Course Description.
CSCI 321 Analysis of Algorithms
This course studies effectiveness, efficiency and clarity considerations in algorithm design and implementation. General techniques such as divide and conquer, greedy methods, dynamic programming, backtracking, searching and various traversals, will be studied. In addition, tactics for measuring algorithm efficiency, including evaluating summations and solving recurrence relations, will be examined. Measurements given in O-notation will provide the basis for comparing the efficiency of algorithms. Computational complexity, the classification of problems as being in classes P, NP and NP-complete according to their inherent difficulty, will be studied. Students will be able to distinguish tractable problems, those with efficient solutions, from intractable problems, those whose known solutions are impractical no matter how powerful the computer is. Prerequisite: CSCI 220 and MATH 250. Fall semester, alternate years.
CSCI 322 Programming Languages
A programming language is a tool for instructing computers, a means for programmers to communicate with each other, a method for expressing high-level design, a notation for algorithms, a tool for experimentation, and a means for controlling computerized equipment. The purpose of this course is to give students an understanding of the essentials of programming languages, such as syntax, semantics, run-time structure, and data and procedural abstraction. Students study a simple compiler to better understand the underlying structures of programming languages along with the necessary tools for the critical evaluation of existing and future programming languages and programming concepts. Principles that underlie diverse languages, their unifying themes, distinctions between them, and implementation issues are stressed. A variety of different programming paradigms are covered, especially those that are not already familiar to the students. Prerequisite: CSCI 220 and CSCI 225. Fall semester.
CSCI 323 Theory of Computation
This course formalizes a definition of a computation model, and then uses this as a framework to deal with the fundamental question "What can and cannot be computed?" It studies deterministic and non-deterministic computational models such as finite automata, push-down automata, and Turing machines, as well as regular expressions and grammars. The course identifies the types of problems that can and cannot be solved by each of these models of computation. Since general computers are equivalent to a mathematical model called a Universal Turing machine, Church's thesis, which points out this machine's inability to solve some problems (e.g., whether a program has an infinite loop), will be discussed. Prerequisite: CSCI 220 and MATH 250. Fall semester, alternate years.
CSCI 330 Database Techniques and Modeling
This course introduces fundamental concepts of database modeling, database design and the languages and facilities provided by database management systems. It also investigates the data structuring implementation techniques appropriate for databases. Entity / relationship diagrams are used for modeling. A 3-layered view of database architecture is studied. The relational database model is stressed, but other models are also discussed. Students are required to work within a team environment to model and design a solution to a substantial database problem. They are also required to implement a rapid prototype of their solution using a host language interface of a state-of-the-art database software system. Both closed and open laboratories are used throughout the course. Prerequisite: CSCI 220. Fall semester.
CSCI 340 Artificial Intelligence
The study of artificial intelligence involves the exploration of the principles and techniques involved in programming computers to do tasks that would require intelligence if people did them. State-space and heuristic search techniques, logic, and other knowledge representations, and statistical and neural network approaches are applied to problems such as game playing, planning, the understanding of natural language, and computer vision. Prerequisite: CSCI 220 and MATH 250.
CSCI 347 Robotics and Real-Time Processing
Computers are found embedded in almost everything from washing machines to cars to health monitoring devices. The computational and timing requirements of these systems varies widely, from machines expected to do a few arithmetic operations every second to computers executing complex calculations at tremendous rates. This course introduces students to design and evaluation issues in such systems. Students will study and implement real-time systems where time responses by a computer are vital, or at least important. These principles will be experienced by building and programming robots. Prerequisite: CSCI 225.
CSCI 350 Event Programming within a Windowing Environment
A lecture and laboratory course in event programming using a windows type environment. Focus is on the design and implementation of windowing programs using an object-oriented language and other object-oriented development tools. Windowing class libraries are studied in detail and are used to implement common windowing features. Students will design and implement a substantial event driven program using a variety of windowing techniques and features. Prerequisite: CSCI 205.
CSCI 370 Introduction to Operating Systems
A lecture and laboratory course investigating the algorithms, principles, design, and implementation of modern operating systems. Major topics include history and evolution, tasking and processes, process coordination and synchronization, physical and virtual memory organization, I/O systems and device drivers, and security and protection. Closed and open laboratories will concentrate on the practical considerations of operating systems including UNIX and Windows 2000 as case studies. The weekly closed laboratory sessions will focus on experiments that complement and enhance the lecture topics. Closed labs will also be used to develop skills in system tools and utilities. Open labs will be used to modify and implement some of the design issues of operating systems. Prerequisite: CSCI 220 and CSCI 225. Spring semester.
CSCI 373 Communications / Networks
A lecture and laboratory course designed to explore networking from the ground up. This course is built around the study of the various components of the theoretical OSI networking model from beginning to end. Moreover, students study various practical implementations of the OSI layers. Topics include: data transmission, wired and wireless networking, multiplexing and switching, error detection and correction, routing and network addressing, flow and congestion control, socket programming and network security. Prerequisite: CSCI 220 and CSCI 225. First semester, each year.
CSCI 460 Senior Capstone Experience
This is the capstone experience for the computer science major. This course is designed to allow students to learn more about a particular topic in computer science, to help them further develop the skills necessary to learn on their own, to help develop communication and presentation skills, and to help develop an awareness of the legal and ethical issues inherent in the discipline of computer science. Computer science is best learned when engaged in hands-on projects. Students will be given an individual project that integrates and extends concepts covered in other CSCI courses. The projects range from research to experimentation to design and implementation of a small system. Students will work mostly on their own with faculty assistance as needed. At the end of the semester, students will present their projects to the CSCI faculty and students majoring in computer science. The course format includes discussions, outside speakers, current topics, and project experiences. Prerequisite: CSCI 321 or 323, CSCI 322, CSCI 370, senior standing and instructor consent. Spring semester.
CSCI 489 Special Topics
A course designed for individual or group study through special arrangement with a faculty member. The content and methodology will be determined by the instructor. Prerequisite: junior or senior standing, and instructor consent.
CSCI 490 Independent Study
A course offering which allows students to pursue an area of study on an individual basis, with consultation and evaluation. The methodology and objective will be mutually agreed upon by the faculty member and the student. Prerequisite: junior or senior standing, and consent of the instructor.
Computer Science · College Catalog Home Page · Course Descriptions · Registrar
St. Norbert College
Comments on this page:
Phone: (920) 403-3216
Fax: (920) 403-4035
Comments on the web site:Webmaster
Copyright © 1996-2004 by St. Norbert College.
All rights reserved.