Computer Science (CSC)
CSC 1007 Exploring Computer Science (1 Credit)
An experience on the construction of simple applications. Topics include fundamentals of software development, the computing professions, and trends in computer science and information technologies. Combines lectures, hands-on laboratories and application development projects. Typically offered: Summer.
Course Schedule
CSC 1010 Science and Technology (5 Credits)
A hands-on exploration of the science behind the computer, the fundamental concepts of computing, and the impacts of computing technology on 21st Century life. Topics will be selected from such areas as the history of computing, data representation and storage, applications (SW creation, simulation, games and graphics), networking and communications, and artificial intelligence. Combines lecture, discussion, and laboratory experiences.
Course Schedule
CSC 1230 Problem Solving and Programming (5 Credits)
Students are advised to complete high school pre-calculus, math analysis, or equivalent and demonstrable computer literacy, prior to taking this course. Intended for students majoring in computer science, computer engineering, information systems or electrical engineering. An introduction to computer science, this course covers basics of problem-solving methods and algorithm development; modern programming methodologies; and fundamentals of a high-level block structured language. Solutions to mathematical and scientific problems and scenarios are emphasized.
Course Schedule
CSC 1250 Introductory Problem Solving and Programming (5 Credits)
Students should have demonstrable computer literacy and are recommended to have two years of high school algebra, prior to taking this course. It Covers designing a computerized solution to a problem (i.e. computational thinking), and structured programming concepts and implementation skills. In addition, the course provides an introduction to a modern programming language. The course focuses on structured programming. Typically offered: Autumn, Winter.
Course Schedule
CSC 1260 Structured Programming (5 Credits)
Intended for students majoring in computer science, computer engineering, software development, information systems, or electrical engineering. This course continues with the application of problem-solving methods and algorithm development. The course will explore modern programming methodologies and fundamentals of a high-level block-structured language. The emphasis of the course will be on using structured programming for problem solutions. Solutions to mathematical and scientific problems and scenarios are emphasized. Typically offered: Winter, Spring.
Course Schedule
CSC 1521 Contemporary Math with Computing (5 Credits)
Explores topics that illustrate how mathematical methods and models permeate our economics, political, and personal lives. By investigation of diverse applications, a variety of problem-solving techniques will be introduced, including using the computer as a quantitative problem-solving tool. Introduces the mathematics behind the computer and also examines data representation, storage and manipulation.
Course Schedule
CSC 1800 Special Topics in Computer Usage (1-3 Credit)
Prerequisite: Demonstratable computer literacy. Presentation of a topic of current interest in computer usage. Topics may vary between offerings.
Course Schedule
CSC 2099 Technical Interview Preparation I (1 Credit)
Provides students the space to solve real technical interview questions. Students will meet and create teams to discuss and work out coding problems under the supervision and support of an instructor. Typically offered: Spring.
Course Schedule
CSC 2222 Programming Techniques (3 Credits)
Course Schedule
CSC 2230 Computer Programming for Engineers (5 Credits)
A fast-paced introduction to computer programming focused on engineering and science analyses and designs using a programming language (like Python) or software tool (like MATLAB). Provides practical, structured programming and problem-solving skills focused on techniques for numerical solutions to engineering and science problems when no analytical solution exists. Fundamental programming topics include data types, inputs/outputs, variables, matrices, decisions, looping and subroutines, built-in and user-defined functions, files, and plotting. Simultaneously, this course covers key aspects of modeling and error analysis, roots and optimization, linear systems, numerical integration and differentiation, and ordinary differential equations. This course does not serve as the prerequisite to CSC 2430.
Course Schedule
CSC 2330 Data Structures & Programming (5 Credits)
Prerequisites: 2.5 or better in 2 quarters (or 1 semester) of Object Oriented Programming taken outside SPU in a language other than C++. Transfer coursework must include basic programming, fundamentals of OOP, and basic data structures. This course will introduce the C++ programming language to students who already have experience with another object-oriented language. Fundamental C++ includes variables, control statements, functions, and arrays. The course will also explore recursion, dynamic memory and pointers, classes, encapsulation, methods, and inheritance. Typically offered: Autumn.
Course Schedule
CSC 2430 Object Oriented Programming (5 Credits)
Intended for students majoring in computer science, computer engineering, or electrical engineering. This course continues with the application of problem-solving methods and algorithm development. The course is a continuation of CSC 1230, moving from structured programming to object-oriented programming (OOP). Introduces encapsulation, working and designing classes, methods, access control, composition, inheritance, and polymorphism. Furthermore, pointers and dynamic memory allocation are discussed. Typically offered: Autumn, Spring.
Course Schedule
CSC 2431 Data Structures and Algorithms (5 Credits)
Covers linear data structures (lists, stacks, and queues) and hierarchical data structures including trees. Introduces fundamental time complexity with big O notation. Discusses searching and sorting algorithms. Introduces methods of organizing and accessing data (hashing and indexing), as well as external data structures. Explores data structures libraries (i.e. C++ STL, Java Collections Framework, etc.) Typically offered: Winter.
Course Schedule
CSC 2951 Directed Study: "C++" Programming (2 Credits)
Presents fundamentals of the C++ programming language.
Course Schedule
CSC 3000 Principles of Professional Practice (1 Credit)
Seminar and group discussion on topics related to the development of professional skills to prepare students for a computing career. Includes discussion of computer science and SPU's mission, leadership styles, workplace ethics, internship and resume preparation, interviewing skills development, and exploration of internship job opportunities. Typically offered: Autumn.
Course Schedule
CSC 3011 Living in a Digital World (3 Credits)
Explores the technological, ethical, legal, and societal impacts of computing technology on daily life. Topics include Catalysts for Change, Net Neutrality, Social networking sites terms of use and privacy policies, and The good, the bad, and the ugly of Artificial Intelligence. Other topics may include computer crime, patents, trademarks, intellectual property, computer security, technology in the workplace, today’s surveillance culture, and the global information society. The class format is a combination of lectures, discussions, individual and group projects, papers, and presentations. Typically offered: Winter.
Course Schedule
CSC 3099 Technical Interview Preparation II (1 Credit)
Provides students the space to solve real technical interview questions. Students will meet and create teams to discuss and work out coding problems under the supervision and support of an instructor. Typically offered: Spring.
Course Schedule
CSC 3150 Systems Design (5 Credits)
Students propose a software product that they will design individually throughout the course. Three substantial written artifacts are delivered: a Project Initiation Request (which requires approval to proceed), the System Proposal, and the System Specification documents. Topics covered include: product motivation, project initiation, feasibility analysis, requirements gathering, object-oriented data model design, system architecture, security, user interface design, project methodologies with a focus on agile methodologies, and the use of AI in software engineering. Typically offered: Spring.
Course Schedule
CSC 3220 Applications Programming (5 Credits)
An implementation-oriented look at software development techniques used to create interactive applications, focusing on the use of object-oriented libraries to create back end applications. Topics include service oriented architecture, RESTful applications, event-driven programming, database interfaces, and tools for interface prototyping. Typically offered: Winter.
Course Schedule
CSC 3221 Netcentric Computing (5 Credits)
Introduction to development of web applications. Topics include the internet and networking fundamentals, HTML, CSS and front-end programming, connecting front end with back end. Typically offered: Spring.
Course Schedule
CSC 3310 Concepts in Programming Languages (4 Credits)
Explores organization, characteristics and structure of programming languages; examines and experiments with different programming languages' domains; and studies programming language specification. Typically offered: Autumn.
Course Schedule
CSC 3350 Operating Systems Programming (3 Credits)
Introduction to operating systems and systems programming. Surveys systems software; system calls; utilities and shell programming; compilers, linkers and loaders; process and thread creation and scheduling; concurrency; virtual memory; programmed and memory-mapped I/O; and security. Typically offered: Spring.
Course Schedule
CSC 3430 Algorithm Design and Analysis (4 Credits)
Studies algorithmic, problem solving approaches such as greedy, divide and conquer, and dynamic programming. Covers the design and analysis of algorithms for searching, sorting, string processing, table management, and graphs. Includes principles of computational complexity and analysis. Typically offered: Winter.
Course Schedule
CSC 3750 Computer Architecture and Organization (5 Credits)
This course provides a programmer's perspective on the basic concepts underlying computer systems, including programs execution, data storage, and communication. It enables students to become more effective programmers, especially in dealing with issues of performance, robustness, and security. Topics covered include digital logic, computer structure, machine language, addressing, use and operation of assemblers, micro-architectures, instruction formats, and the memory hierarchy.
Course Schedule
CSC 3760 Computer Organization and Assembly Language (5 Credits)
Studies organization and structuring of the major hardware components of computers. Includes mechanics of information transfer and control within a digital computer system. Introduces computer architecture, machine instruction sets and assembly language programming. Typically offered: Winter.
Course Schedule
CSC 4210 Theory of Computation and Algorithm (3 Credits)
Introduction to theoretical topics in computer science. Includes formal languages, automata and parsing; Turing machines, decidability, recognizability and computability. Typically offered: Alternate Years.
Course Schedule
CSC 4220 Information Security Fundamentals (3 Credits)
The Information Security Fundamentals course presents an overview of Information Security that includes theory, practice, and technology. Topics covered include security vulnerabilities and controls surrounding operating systems, networks, email, databases, wireless, the cloud, peer-to-peer, and distributed devices. Privacy, access control, cryptography, and ethical hacking are examined in depth. Typically offered: Alternate Years.
Course Schedule
CSC 4250 Introduction to Artificial Intelligence (3 Credits)
Explores artificial intelligence with an integrated approach: theory, construction, application and societal implications. The students will learn the different technologies associated with AI, how to build simple learning algorithms, the use of available AI tools and machine learning software. In addition to the technological component, there will be discussions on the ethical and societal implications of AI. Typically offered: Alternate Years, Summer.
Course Schedule
CSC 4310 Compiler Design (3 Credits)
Studies programming language translation and compiler design concepts; language recognition, symbol table management, semantic analysis, and code generation.
Course Schedule
CSC 4350 Advanced Operating Systems (3 Credits)
Introduces the major functions of operating systems. Covers processes and concurrency; concurrent programming; resource allocation, contention and control; scheduling, memory management, and device management.
Course Schedule
CSC 4410 Database Systems (5 Credits)
Introduces database concepts including: relational (SQL) and document (MongoDB) databases; database IDEs; data models, ER diagrams, and normalization; data description (DDL) and manipulation (DML) languages; relational algebra and relational calculus; and database security, integrity, performance, and reliability. Introduces non-relational databases (NoSQL), Artificial Intelligence techniques, security topics including SQL injection, and database privacy and ethical concerns. Typically offered: Autumn.
Course Schedule
CSC 4430 Advanced Programming (3-5 Credit)
Provides experience with advanced or specialized topics in software development. Topics and credits will vary; some offerings may require additional prerequisites depending on focus or environment.
Course Schedule
CSC 4750 Computer Networks (5 Credits)
Students learn the fundamentals of the functioning of IP networks, focusing on all the relevant protocols and their interactions. Typically offered: Alternate Years.
Course Schedule
CSC 4760 Advanced Computer Architecture (5 Credits)
Recommended Prerequisite: CSC 2431. Studies the architecture of multiprocessor, pipelined, and parallel computers. Emphasis is placed on principles of instruction level parallelism, multi-core processing, and distributed computing.
Course Schedule
CSC 4800 Advanced Issues in Computer Science (3-5 Credit)
Examines a special interest topic in computer science. Topics and credits may vary between offerings. Computer science minors may take this course with instructor approval.
Course Schedule
CSC 4896 Software Engineering Capstone I (3 Credits)
Explores the technical processes and practice of software engineering. Lecture/discussion topics include the development process, project planning and management, measurement and metrics, and software quality assurance. In this first of a three-quarter team software development sequence, student teams will begin creating a professional-grade software app. Students will pitch product ideas, be placed on a team, and be assigned a software product to build. Each team will create a team contract and use Agile Scrum to plan and propose the MVP features for the product. Products are required to include the use of AI in at least one of the MVP features. Once approved, the teams will begin building their software product. Three times throughout the year, teams will present their development status, challenges, and demo their product to the industry professionals on the Board of Advisors. A fully working MVP product will be delivered at the end of the 3rd quarter in this course sequence.
Other topics covered in the full-year course sequence include project initiation, agile scrum methodology, risk assessment and mitigation, cloud services, database selection, manual and automated testing, source code management via GitHub, CI/CD, system security, and ethics. This course also begins the exploration of senior capstone topics via assignments, discussions, and guest speakers, which will continue throughout the year. A final grade will be awarded for this course upon completion of CSC 4897 and CSC 4898. Typically offered: Autumn.
Course Schedule
CSC 4897 Software Engineering Capstone II (3 Credits)
This course is the continuation of a three-quarter software development experience. Student teams will implement, test, evolve, and deploy the software app they began in CSC 4896. Class time will be primarily devoted to the application of software engineering principles to their project, technical reviews, and a formal presentation of the status and a demo of the system completed to date to the Board of Advisors. See the description of CSC 4896 for more information on the topics covered. This course will continue the exploration of senior capstone topics via assignments, discussions, and guest speakers, which will continue throughout the year. A final grade will be awarded for this course upon completion of CSC 4896 and CSC 4898. Typically offered: Winter.
Course Schedule
CSC 4898 Software Engineering Capstone III (3 Credits)
This 3rd and final senior capstone course will complete and deliver the software product started in CSC 4896 & CSC 4897, and will complete the exploration of the capstone topics and frontiers in computer science and information systems. Students will review and summarize their educational experience at SPU in a written paper. Preparation for a career and lifelong learning options are included. Students will investigate and write a term paper on one or more current topics within the computing industry. This course is the completion of a three-quarter team software product development sequence. Student teams will implement, test, and deliver the software product they began in CSC 4896 and CSC 4897. See the description of CSC 4896 for more information on the topics covered. Class time will be devoted to applying software engineering principles to their project, technical reviews, formal presentations, and demos of the completed system, and to the other capstone topics. Teams will present their project status and demo their product at the Erickson Conference and at the Senior Showcase Event, which is a culminating trade-show-like expo of the software app the course's students have created over the year. Upon completion of this course, the grades for CSC 4896 and CSC 4897 will be awarded. Typically offered: Spring.
Course Schedule
CSC 4900 Independent Study in Computer Science (1-5 Credit)
Independent study and research in an advanced computer science topic.
Course Schedule
CSC 4930 Practicum in Computer Science - University Service (1-5 Credit)
Practical experience in applied computer science that provides a service to the university. Examples include academic system support and programming; tutoring, grading and lab preparation. Includes an assessment of Christian service issues or experiences.
Course Schedule
CSC 4931 Computer Science Practicum (1-5 Credit)
Practical experience in applied computer science such as in off-campus work experiences.
Course Schedule
CSC 4940 Internship in Computer Science (1-5 Credit)
Provides a coordinated and supervised field experience in the computing sciences. Typically involves work in systems analysis and design, programming, quality assurance, and/or end-user support. Students will complete a project related to their vocational exploration experience. Includes an assessment of Christian service issues.
Course Schedule
CSC 4941 Computer Science Professional Experience (1 Credit)
Students report on their professional experiences (such as internship or certification) through written reports and presentations. Students will also consider post-graduation aspects of entering the profession. To pass this course, the student will need to show proof of completion of an approved internship or professional certification. Typically offered: Autumn.
Course Schedule
CSC 4950 Topics in Computer Science (1-5 Credit)
An advanced course studying a special interest topic in computer science. Topics and credits may vary between offerings.
Course Schedule
CSC 4960 Project in Computer Science (1-5 Credit)
Independent work on a significant project in computer science.
Course Schedule
CSC 4970 Directed Research in Computing Sciences (2-5 Credit)
The student will conduct research based on a proposal prepared prior to registering for this course. Results of the research will be prepared for presentation at undergraduate or professional symposia.
Course Schedule