Computer Science
Andrew J. Crump, Assistant Professor
The science of computing is a rapidly growing field of study. Computers are used in almost every facet of life, and a grasp of their fundamentals can lead to challenging and rewarding activity in many fields. Principia’s computer science courses stress the principles that underlie computing as well as practical experience in creating software and problem solving.
Students develop programming skills from beginning to advanced levels and also learn about the fundamental design and architectural considerations of computer systems. In the process, students have plenty of opportunities to demonstrate the discipline and persistence needed to bring a program to completion—all the while gaining confidence in their ability to think systematically and to recognize everyone's natural ability to do so.
Because a thorough understanding of content from the four core courses is essential to later CSCI courses, a student must earn at least a 2.000 in all of these in order to proceed with a CSCI major or minor. To complete a major or minor offered by the Computer Science Department, a student must earn a cumulative average of 2.000 or higher for the courses (required and elective, within the department or outside it, such as math) taken for that program.
Program Learning Outcomes
- Develop software according to current best practices.
- Explain and apply the relevant mathematics of computer science.
- Analyze the ethical and legal issues surrounding computer science technology.
College Wide Student Learning Outcomes of Principia College: Defining a Liberal Arts Education
The curricular and co-curricular programs at Principia College are designed for students to be lifelong learners, thinkers, and problem-solvers. To accomplish this, the College has established the following outcomes for its graduates.
Guided by Principle, Principia College students will demonstrate:
- Depth and breadth of knowledge
- Critical and creative thinking
- Effective communication
- Intellectual inquiry and engagement
- Active commitment to community and global citizenship
CSCI 170 Intro to Computer Science 4.0 SH [GESN]
Modern computing concepts, components, history from the abacus to the modern PC. Introduction to computer arithmetic, logic, circuits, a low-level language and a high-level language, elementary systems, networks, and ethics. Does not teach computer applications (such as word processing) but explores the science of computing. Does not count toward the CSCI major or the MIS minor.
CSCI 171 Introduction to Programming 4.0 SH [GESN]
Focus on fundamental concepts of problem solving by analyzing problems and using a computer language (C++, Java, or Python) as a tool to design, code, document, and test solutions, learned through textbook study, lectures, examples, and considerable practice in the computer science programming laboratory. Professional approaches are emphasized. (A student may receive credit for only one of the courses CSCI 171 or CSCI 181.).
CSCI 181 Accelerated Intro Programming 2.0 SH [ ]
Students entering the computer science program with considerable programming experience may take this course as a replacement for CSCI 171 as a major requirement.
Prerequisite: successful completion of a programming competency test. (A student may receive credit for only one of the courses CSCI 171 or CSCI 181.).
CSCI 182 Intro to Data Structures 4.0 SH [ ]
In-depth coverage of programming concepts, with emphasis on data structures, including arrays, structs, class objects, stacks, queues, and lists. Algorithms and complexity analysis for searching and maintaining sorted and unsorted lists. Explicit pointer data type and dynamic allocation of memory. Introduction to object-oriented programming and recursive functions.
Prerequisite: Either CSCI 171 or CSCI 181 with a grade of C or better.
CSCI 190 Introductory CSCI Topics 1.0-5.0 SH [ ]
Introductory computer science topics will vary from year to year based on the needs and interests of students and instructor. May be taken a maximum of five times up to sixteen semester hours provided the topics differ.
CSCI 202 Internship 1.0 SH [ ]
Software development internship. Students will complete an industrial internship involving software testing or development, identifying a portion of their effort that is individually performed, and is academically meritorious.
Prerequisite: CSCI 182.
CSCI 220 Programming Languages 4.0 SH [ ]
A survey and comparison of programming languages, learned through study and considerable programming practice. Intended to form the programming language basis for courses in object-oriented programming and database management systems.
Prerequisite: CSCI 171 and CSCI 182 with a grade of C or better in both courses.
CSCI 225 Database Fundamentals 2.0 SH [ ]
Course covers a working professional's knowledge of SQL (including DDL and DML), the standard language for creating, modifying and querying databases.
Prerequisite: CSCI 171 with a grade of C or better.
CSCI 240 Software Design 3.0 SH [ ]
Modern software design, with a focus on software development using LLM code generators. Review of OO and functional design, followed by design and decomposition of projects for implementation by LLMs. Development of prompts in the form of clear source comments. Review, evaluation, testing, and correction of LLM-generated code.
Prerequisite: C or better in CSCI 171, CSCI 182, and CSCI 220.
CSCI 263 Computer Software Architecture 3.0 SH [ ]
Topics include assembly language programming and ISA design issues, low-level OS concepts including memory management, cache, I/O and process/thread management.
Prerequisite: CSCI 171 and CSCI 182 with a grade of C or better in both courses.
CSCI 310 Software Engineering 3.0 SH [ ]
Methodologies for developing and maintaining large complex software systems. Case studies and team exercises are included. Focus on complete software life cycle, including specification, design, implementation, testing, debugging, and documentation.
Prerequisite: C or better in CSCI 171, CSCI 182, CSCI 220, and CSCI 240.
Class Level Restriction: Junior and Senior only.
CSCI 316 Professional Software Dev 3.0 SH [ ]
Practical industrial software development, including methods for mastering and contributing to existing large codebases, and the use of standard tools for source control, testing, and documentation.
Prerequisite: C or better in CSCI 171, CSCI 182, CSCI 220, and CSCI 240.
CSCI 324 Web Development 4.0 SH [ ]
Design and development of client and server-side web applications, using libraries, and technologies relevant as of the time of course offering. Coverage of scripting language concepts including closure, dynamic typing, and prototypes. The class is project-oriented, and students will complete a significant web application.
Prerequisite: CSCI 225 or CSCI 325; C or better in CSCI 171, CSCI 182, CSCI 220, and CSCI 240.
Class Level Restriction: Junior and Senior only.
CSCI 325 Advanced Databases 4.0 SH [ ]
Systems for managing and processing very large sets of data, including classic SQL databases, NoSQL databases, and vector databases. Project-oriented utilization of each of these three major forms of modern database.
Prerequisite: C or better in CSCI 171 and CSCI 182.
CSCI 330 Operating Systems 3.0 SH [ ]
The inner workings of several popular multiprogramming operating systems are compared. Topics include processor scheduling, device management, memory management, and parallel processing.
Prerequisite: C or better in CSCI 171, CSCI 182, CSCI 220, and CSCI 240. CSCI 263 also required.
Class Level Restriction: Junior and Senior only.
CSCI 333 Computer Networking 3.0 SH [ ]
Introduction to Local Area and Wide Area computer networks. Topics include network topologies, ISO protocols, Ethernet, TCP/IP, and network support for distributed computing. The course emphasizes the science of networking (as opposed to network administration).
Prerequisite: C or better in CSCI 171, CSCI 182, CSCI 220, and CSCI 240.
Class Level Restriction: Junior and Senior only.
CSCI 335 Cloud Computing 3.0 SH [ ]
Learn how to configure a cloud-resident website or mobile app able to scale to millions of users. Build sophisticated software rapidly by integrating existing cloud-resident services into software to meet particular needs.
Prerequisite: C or better in CSCI 171, CSCI 182, CSCI 220, and CSCI 240.
Class Level Restriction: Junior and Senior only.
CSCI 337 Cybersecurity 3.0 SH [ ]
This course introduces the importance of cybersecurity and covers its various components, including writing software that is invulnerable to cyberattack, common methods of cyberattack, secure encryption algorithms, firewall configuration, intrusion prevention/detection, and honeypots.
Prerequisite: C or better in CSCI 171, CSCI 182, CSCI 220, and CSCI 240.
Class Level Restriction: Junior and Senior only.
CSCI 340 Advanced Algorithms 3.0 SH [ ]
Survey of algorithms, with an emphasis on the application of algorithmic theory to the solution of practical problems. Categories include algorithm taxonomy, greedy algorithms, dynamic programming, divide-and-conquer, and intelligent search. Various specific algorithms exemplifying these categories are drawn from a variety of application areas such as compression, encryption, graph problems, sorting, computational geometry, and string matching.
Prerequisite: C or better in CSCI 171, CSCI 182, CSCI 220, and CSCI 240.
Class Level Restriction: Junior and Senior only.
CSCI 350 Computer Graphics 4.0 SH [ ]
Graphics software development and use of application programming interfaces for 3D graphics. The graphics pipeline, modeling, geometric and viewing transforms, lighting and shading, rendering, interaction techniques and graphics hardware. Completion of a graphics software project.
Prerequisite: C or better in CSCI 171, CSCI 182, CSCI 220, and CSCI 240.
Class Level Restriction: Junior and Senior only.
CSCI 380 Compilers 4.0 SH [ ]
Concepts necessary for designing and developing a compiler. Topics include lexical analysis, parsing, semantic analysis, symbol table management, and code generation. Students will implement a small compiler as a project.
Prerequisite: C or better in CSCI 171, CSCI 182, CSCI 220, and CSCI 240. CSCI 263 also required.
Class Level Restriction: Junior and Senior only.
CSCI 390 Topics in Computer Science 1.0-5.0 SH [ ]
Topics will vary from year to year based on the needs and interests of students and instructor. All offerings will involve in-depth study of a specific topic, software design, the construction of working software, and self-instruction in addition to standard instruction. May be taken more than once if topics are different.
Prerequisite: C or better in CSCI 171, CSCI 182, CSCI 220, and CSCI 240.
CSCI 410 Capstone Proposal 1.0 SH [ ]
Students research and prepare a capstone proposal in preparation for completing a computer science capstone project. The proposal must be approved by the computer science faculty prior to taking CSCI 415.
Prerequisite: C or better in CSCI 171, CSCI 182, CSCI 220, and CSCI 240.
Class Level Restriction: Junior and Senior only.
CSCI 415 Capstone 3.0 SH [ ]
A student-designed project with a significant programming component which pulls together the student's major. Choices include independents, internships, or group projects.
Prerequisite: C or better in CSCI 171, CSCI 182, CSCI 220, and CSCI 240. CSCI 410 also required.
Class Level Restriction: Junior and Senior only.
CSCI 421 Computer Issues Seminar 3.0 SH [ ]
An examination and discussion of pressing computer issues facing society. Topics include personal impact, societal impact, artificial intelligence, privacy, and ethics. Majors from other disciplines are encouraged to take this course if they have taken any other computer science course.
Class Level Restriction: Junior and Senior only.