Computer Science Minor

Department of Computer Science

The Computer Science minor provides students with an excellent foundation in computer science, while providing freedom to explore special topics of interest.  The minor builds strong programming and problem solving skills, and is particularly useful when combined with a major in any of the sciences, Mathematics, Business, Economics, Linguistics, or Geography.  Students interested in the natural sciences and mathematics will particularly benefit from Computer Science 109 and 420.  Students interested in pursuing graduate studies in computer science should consider taking Computer Science 305, 326, 401 and/or 405.

Computer Science Minor Requirements (20 credits)

Any Computer Science course, of at least 3 credits, numbered 100 or higher; Computer Science 220 and 230; any three (3) Computer Science courses numbered 300 or above, for a total of at least 9 credits.

Computer Science Course Offerings

Computer Science course offerings will be found under the 4 letter code of CPSC in the course listings.

104 – The Internet: Technology, Information, and Issues (3)

A survey of the technology and issues underlying the use of the Internet for communication, resource discovery, research, and dissemination of information in multimedia formats. Topics include an introduction to Internet protocols, Internet history and development, electronic mail, use and functions of a Web browser, accessing Internet services and resources, using the Internet for research, Website design and implementation, and social, legal, and ethical issues related to using the Internet.

105 – Problem-solving with Databases (3)

Introduces relational databases as a common problem-solving tool for business, scientific, and personal applications. Covers issues of information representation, abstraction, redundancy and inconsistency. Introduces database schema design based on the relational model, including semantic modeling, integrity constraints, and language-based queries. Students build sample database solutions based on real-world problem domains. May not be taken after passing CPSC 350.

106 – Digital Storytelling (3)

People have been telling stories since the beginning of time, but how is storytelling evolving in the digital age? This course explores how computers are being used to tell stories. We’ll study text-based technologies – blogging, the web – and how those models have changed the way we publish and disseminate narratives. We’ll also study the roles of audio, video, and images in narrative: computer animation, the ethics of altering digital images, and the Story Corps project. Students will use technology including blogs, virtual worlds, and computer games to create and tell their own stories. No previous computer experience is necessary.

109 – Introduction to Modeling and Simulation (3)

This course introduces students to the concepts of modeling and simulation as tools for solving problems in the sciences. Students will be introduced to several modeling and simulation tools and will learn how to decompose problems so they can be represented and solved with the tools. Agent models and system models will be introduced. Example problems to demonstrate the modeling and simulation techniques and tools drawn from a number of scientific fields and will introduce basic problems that will not require depth of knowledge in any particular field of science. Examples of these problems include forest fires, predatory problems, transmission of diseases, chemical reactions, and elementary particle simulations. Students completing the course will be able to model complex systems and have attained programming skills equivalent to those learned in CPSC 110.  Successful completion of this course is sufficient to continue on to CPSC 220. No previous programming experience or computer background is expected.

110 – Introduction to Computer Science (3)

This course provides a foundation in computer science for a student who does not have prior programming experience. It provides sufficient support to permit a student to continue in the major program. Topics include an introduction to the algorithm and program development process using a high-level structured programming language and the department’s computing facilities. Supervised hands-on experience provided. May not be taken for graded credit after passing any Computer Science course numbered 220 or higher.

125 – Introduction to Discrete Mathematics (3)

Designed to prepare beginning Computer Science majors for advanced study by emphasizing the components of Discrete Mathematics especially related to Computer Science. An introduction to topics which may include number systems, logic, methods of proof, counting techniques, mathematical induction, sets, relations, functions, matrices, graphs and trees.

220 – Computer Programming and Problem Solving (4)

Prerequisite: CPSC 109 or 110 or permission of instructor. Continued coverage of disciplined problem-solving and algorithmic development including emphasis on procedural and data abstraction. Topics include elementary data structures such as arrays, files, and classes. The notions of data modeling and the linking of data type definitions with their associated operations is introduced. Study of program design, coding, debugging, testing, and documentation in a higher level language that supports the object-oriented paradigm. Intended for students who have had previous programming experience.

230 – Data Structures and Algorithms (4)

Prerequisite: Grade of C or better in CPSC 220. Continued study of data modeling and incorporation of abstract data types including linked lists, stacks, queues, heaps, trees, and graphs. Study of advanced sorting and searching techniques. Provides experience in the use of algorithm analysis. Continued study of program design, coding, debugging, testing, and documentation in an object-oriented higher level language.

270 – Introductory Special Topics in Computer Science (3)

Prerequisite: Specified by Instructor. Lecture or seminar class dealing with a topic accessible without extensive Computer Science experience. Most recently this has included topics such as JavaScript Programming. May be repeated for credit with a change in topic.

302 – Computer Ethics (3)

Prerequisite: CPSC 110 or 220. An examination of issues and events related to ethics, professional conduct and social responsibility as they apply to the field of Computer Science. Includes study of ethical responsibilities and behaviors appropriate for computer scientists.

305 – Computer Systems and Architecture (4)

Prerequisites: (1) CPSC 125 or MATH 201, and (2) CPSC 230. This course examines the basic operation of computing systems. It takes a bottom-up approach covering each major component of such systems including hardware, logic circuit design, CPU instruction sets, assemblers, and compilers. Students will gain experience programming in assembly language and C.

310 – Computer Information Systems (4)

Prerequisite: CPSC 220. This course introduces the student to the use and implications of information technology in the business environment. This course covers such topics as data management, networks, analysis and design, computer hardware and software, decision support systems, database management systems, transaction processing systems, executive information systems, and expert systems. It also provides activity with computer-based and non-computer-based problems/cases and includes real-world programming projects that are implemented using a high-level programming language.

320 – Statistics for Computer Scientists  (3)

Prerequisites: MATH 121 and CPSC 220. A calculus-based mathematical statistics course with special emphasis on applications in Computer Science. Topics include probability, mass/density functions, discrete/continuous random variables, and general data analysis using a statistical software package.

326 – Theoretical Foundations of Computing (3)

Prerequisites: (1) CPSC 125 or MATH 201, and (2) CPSC 230 and MATH 122. Emphasis will be on structures and concepts relating to the theory of computation and the different types of theoretical machines that are mathematical models for actual physical processes. Topics may include automata theory, Turing machine theory, formal language theory, and the halting problem.

330 – Object-Oriented Analysis and Design (4)

Prerequisite: CPSC 230. Theory and practice of the object-oriented software development paradigm. Focus is on major design principles such as abstraction, encapsulation, inheritance, polymorphism, aggregation, and visibility. Modeling notations for capturing and critiquing designs. Introduction to the concept of design patterns, and coverage of a catalog of common patterns. Students work in team projects to develop collaborative software solutions in an object-oriented language.

348 – Web Application Development (3)

Prerequisite: CPSC 220. This course provides an introduction to topics related to developing Web applications including: overview of Web technology; introduction to networks and the Internet; popular scripting languages such as PHP, JSP, and JavaScript; electronic payment systems; databases; and security.

350 – Applications of Databases (3)

Prerequisite: CPSC 230. Presents logical database modeling and design, emphasizing the construction and analysis of relational schemas. Covers semantics, integrity constraints, functional dependencies, and table normalization. Practical use of relational algebraic operators, the tuple relational calculus, and their expression in declarative query languages. Introduces basic data mining concepts. May involve student team projects to develop small but representative data collection and analysis applications.

370 through 377 – Special Topics in Computer Science (1–4)

Prerequisites: Specified by Instructor. Lecture or seminar class dealing with a topic accessible after completing CPSC 230. Most recently this has included topics such as Data Science, and Computational Linguistics. May be repeated for credit with a change in topic.

391 – Special Projects in Computer Science (1-4)

Prerequisite: CPSC 230 or higher.  Intensive individual investigation of significant research problem under the direction of a faculty member. GPA and course prerequisites apply.

401 – Organization of Programming Languages (3)

Prerequisites: CPSC 326 and 330. A course in programming language construction and design emphasizing the run-time behavior of programs. Alternative implementations of programming language constructs are considered. Techniques for language definition may also be discussed.

405 – Operating Systems (3)

Prerequisites: CPSC 305 and 330. This course examines the abstractions above the hardware that make a computer usable to both programmers and users. These abstractions include concurrent programming, virtual addressing, transactions, and virtualization. Many of these abstractions are useful not just for operating system kernel development but for development of any large scale programming project. Students apply these concepts by working with a real operating system kernel. Programming intensive.

414 – Network Principles and Applications (3)

Prerequisite: CPSC 125 or MATH 201; and CPSC 330. This course provides an introduction to the basic principles of networking. Topics covered in the course include: network topologies, protocols, the OSI Model, methods of data transmission, error detection and correction, TCP/IP, network security and other topics as time permits. This course is theoretical and concept-oriented rather than consisting of the details of specific network packages.

415 – Artificial Intelligence (3)

Prerequisites: CPSC 125 and 230. A survey of current artificial intelligence topics including informed search, knowledge representation, knowledge-based systems, and machine learning. Other topics such as image processing, robotics, and language processing, may also be covered. Artificial intelligence programming projects are required.

419 – Data Mining (3)

Prerequisites: CPSC 220. Practical knowledge of data mining and information retrieval. Students will examine the theoretical foundations of a variety of techniques, gain experience with these techniques using open source software, and learn how to apply them to real-world problems. Topics include decision trees, Naïve Bayes, Probabilistic retrieval models, clustering, support vector machines and approaches to web mining.

420 – Modeling and Simulation (3)

Prerequisite: CPSC 220. A robust introduction to techniques of mathematical modeling and computational simulation applied to practical problems. Topics include system dynamics approaches, discrete-event simulation, and agent-based models. Students complete small projects on topics as diverse as population growth, epidemic transmission, queuing theory, and forest fire outbreaks.

425 – Parallel Computing (3)

Prerequisite: CPSC 230. This course provides an introduction to parallel computing, covering topics including parallel Architectures, programming techniques and libraries, the study of existing parallel computing systems, and performance analysis. Students will use a variety of hardware to explore current libraries and methods used for parallel programming and complete a project using the material they learn.

430 – Software Engineering (4)

Prerequisite: CPSC 330. Techniques for modeling, designing, implementing, and managing large scale computer programs are studied. Studies include Object-Oriented Analysis and Design, modeling using UML, and application development with a CASE tool. Students work in groups and apply the techniques studied to semester-long projects.

440 – Game Programming (3)

Prerequisite: CPSC 230. Students will design, develop, and implement computer games that involve real-time, event-driven, and multimedia programming techniques. Students learn the history of computer games and the elements of video game design and architecture.

444 – Three Dimensional Computer Graphics (3)

Prerequisites: CPSC 230. The study of three-dimensional modeling involving the use of light, color, texture and transformation; visible surface detection; parallel and perspective projections; clipping algorithms.

448 – Advanced Web Application Development (3)

Prerequisite: CPSC 348 or 350 or permission of the instructor. An examination and application of contemporary software technologies focused on providing Web-based services and applications. Students work in teams to design and develop leading-edge projects. In the recent past this has included developing advanced data-driven applications employing AJAX, PHP, and a database management system.

470 through 477 – Selected Topics in Computer Science (1-4)

Prerequisite: Specified by Instructor. Treatment of selected topics in Computer Science. Most recently this has included topics such as E-Commerce and Programming with AJAX. May be repeated for credit with a change in topic.

491 –Individual Study in Computer Science (1-4)

Prerequisite: Departmental permission. Individual study under the direction of a member of the department. GPA and course prerequisites apply. May be repeated for credit with a change in topic. Two semesters of 3 credits of study required for graduation with Departmental Honors.

499 – Internship (Credits variable)

Supervised off-campus experience with an academic component, developed in consultation with the department. Only 3 credits may count toward the major and minimum GPA and course prerequisites apply.