Academic Catalog

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.
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.
CSC 1130  Beginning 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. 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.
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.
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.
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.
CSC 2222  Programming Techniques  (3 Credits)  
Intermediate programming and problem-solving techniques that will introduce a different programming language than used in CSC 2330 and 2430.
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.
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.
CSC 2430  Data Structures I  (5 Credits)  
Develops discipline in program design, style, debugging, testing. Introduces object-oriented design with classes, methods, and encapsulation. Introduces dynamic storage allocation and pointers. Examines arrays, sorting algorithms, and linked linear data structures.
CSC 2431  Data Structures II  (5 Credits)  
Continues object-oriented design with inheritance and polymorphism; recursion. Covers linked data structures, including trees, and other non-linear representations. Introduces methods of organizing and accessing data (hashing and indexing), external data structures, and graphs.
CSC 2951  Directed Study: "C++" Programming  (2 Credits)  
Presents fundamentals of the C++ programming language.
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.
CSC 3011  Living in a Digital World  (3 Credits)  
Considers the ethical and societal impacts of computing technology on daily life. Sample topics include invasion of privacy, digital media, computer crime, intellectual property, software theft, computer security, technology in the workplace, social networking and the global information society. Class format is a combination of lecture and discussion.
CSC 3150  Systems Design  (4 Credits)  
Recommended Prerequisite: CSC 3220. Surveys issues and tools used in the analysis and design of software systems. Topics include feasibility analysis; requirements gathering and modeling; data modeling; system architecture and security; and user-interface and program design. Measures for the evaluation of specifications and designs are introduced. Typically offered: Spring.
CSC 3220  Applications Programming  (4 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: Spring, Winter.
CSC 3221  Netcentric Computing  (4 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: Autumn, Spring.
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.
CSC 3350  Operating Systems Programming  (3 Credits)  
Introduction to operating systems and systems programming. Surveys systems software; operating system interface and functions; utilities and shell programming; linkers and loaders; translators; and processes, concurrency and concurrent programming.
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.
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. Typically offered: Winter.
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.
CSC 4151  Software Engineering 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 two-quarter team software development sequence, student teams will complete and present the requirements analysis and a prototype of a software system. A final grade will be awarded for this course upon completion of CSC/CPE 4152. Typically offered: Autumn.
CSC 4152  Software Engineering II  (3 Credits)  
This course is a completion of a two-quarter software development experience. Student teams will implement, test and deploy systems they began in CSC 4151. Class time will be primarily devoted to the application of software engineering principles to their project, technical reviews, and formal presentation of the completed system. Typically offered: Winter.
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.
CSC 4220  Cybersecurity Fundamentals  (3 Credits)  
The Cybersecurity Fundamentals course presents an overview of Cybersecurity 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. Access control, cryptography, secure software development, physical security, and social engineering are also considered. Typically offered: Alternate Years.
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.
CSC 4310  Compiler Design  (3 Credits)  
Studies programming language translation and compiler design concepts; language recognition, symbol table management, semantic analysis, and code generation.
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.
CSC 4410  Database Management  (5 Credits)  
Introduces database concepts: data models; data description and manipulation languages; query facilities; data security, integrity and reliability; multi-user, distributed and web-based database processing. Includes the design and implementation of applications using a commercial DBMS.
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.
CSC 4750  Computer Networks  (5 Credits)  
Recommended Prerequisite: CSC 2431. Studies concepts and terminology of computer networks, equipment, and protocols.
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.
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.
CSC 4898  Senior Capstone Seminar  (3 Credits)  
This senior capstone course will complete and deliver the software product started in CSC 4151 & CSC 4152, and explore topics and frontiers in computer science and information systems. Students will review and summarize their educational experience at SPU in a written essay. 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 4151 and CSC 4152. Class time will be devoted to applying software engineering principles to their project, technical reviews, formal presentations of the completed system, and to the other topics listed above. Typically offered: Spring.
CSC 4900  Independent Study in Computer Science  (1-5 Credit)  
Independent study and research in an advanced computer science topic.
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.
CSC 4931  Computer Science Practicum  (1-5 Credit)  
Practical experience in applied computer science such as in off-campus work experiences.
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.
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. A learning contract for a tech internship or professional experience must be approved before enrolling in CSC 4941 and must be completed before passing CSC 4941. Typically offered: Autumn, Winter, Spring.
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.
CSC 4960  Project in Computer Science  (1-5 Credit)  
Independent work on a significant project in computer science.
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.