Computer Science

Brad Miller (department head)

The computer science major at Luther is designed to provide each student with the academic base needed to keep abreast of the changing world of computing. Both theory and practice are taught to allow students to successfully join computer professionals already working in the field.

The major contains a set of core courses in which computer science students learn concepts common to all areas of the discipline. Students then select from a wide range of computer science electives. Since computer science relates to so many different disciplines, students are encouraged to select additional supporting courses from a broad range of academic areas.

In addition, all majors at Luther require a writing component. In computer science, this is fulfilled by taking CS 296 in conjunction with a companion course. See the CS 296 course description for a list of acceptable companion courses. The research will be graded and must be completed with a grade of C or above in order to fulfill the writing and presentation requirement in the major.

Required for a major: CS 130, 140, 150, 160, 165; one from CS 252 or 253; CS 260, 296, 330, 360, 370; two from DS 420, CS 430, 440, 450. The year-long senior project (CS 490 and CS 491) is also required.

Computer science majors are strongly encouraged to take PAID 450: Ethics and Technology, as their Paideia capstone course. Students considering graduate school are strongly encouraged to take MATH 220 as well.

Required for a minor: CS 130, 140, 150, 160, 165; one from CS 252 or 253; CS 330.

Advanced Placement Credit: Advanced placement credit is dependent on successful completion of CS 160 or one of the other computer science courses required for the major. CS 160 is the lowest numbered course for which advanced placement credit will be considered.

Computer Science Courses

CS 130 Fundamentals of Web Programming

  • 2, 4 hours

This course focuses on learning the basic building blocks of web programming. The student will be introduced to three languages used for web page design and implementation: HTML, CSS, and Javascript. To develop a deeper understanding of how web sites work together, the HTTP protocol will be introduced along with basic AJAX programming. The 4 credit option is available when offered during the summer. Recommended for students with an interest in computer science but no prior experience.

CS 140 Data Modeling and Querying

  • 2 hours

The course focuses on constructing relational models of data, the relational algebra, querying relational databases using SQL. Students will become familiar with a popular open source data management system such as MySQL or Postgresql.

CS 150 Introduction to Computer Science

  • 4 hours
  • Fulfills: Quantitative

An introduction to computer science emphasizing problem solving. Problems are selected from a variety of interesting areas such as graphics, image processing, cryptography, data analysis, astronomy, video games, and environmental stimulation. Topics include algorithm design and object oriented programming.

CS 160 Algorithms and Data Structures

  • 4 hours
  • Prerequisites: CS 150

A continuation of the ideas presented in CS 150 with particular emphasis on data structures, algorithms, and analysis. Implementation of abstract data types such as stacks, queues, trees, and graphs as well as important recursive and non-recursive algorithms. Analysis of sorting and searching algorithms.

CS 165 Software Development Tools

  • 2 hours

Students are introduced to tools for automation including shell programming, use of the Linux operating system including redirection of input and output, piping, file management, and system security.

CS 252 Object-Oriented Programming With Java

  • 2 hours
  • Prerequisites: CS 150 and CS 165

Introduction to Java and development in an object-oriented programming language. Topics include project setup and organization, packages, classes, object creation, inheritance, interfaces, polymorphism and the use of built-in types and the Java class library. Considerable time is dedicated to learning incremental programming, debugging strategies, testing strategies, interface documentation, preconditions, postconditions, boundary case testing, unit testing of individual functions, test stubs and test harnesses.

CS 253 Object-Oriented Programming With C++

  • 2 hours
  • Prerequisites: CS 150 and CS 165

Introduction to C and C++ and development in an object-oriented programming language. Topics include C++ organization of classes and function prototypes, header files, class declaration and implementation. Other topics include inheritance, polymorphism, the use of copy constructors, destructors, streams, and operator overloading. Considerable time is dedicated to learning incremental programming, debugging strategies, testing strategies, interface documentation, preconditions, postconditions, boundary case testing, unit testing of individual functions, test stubs and test harnesses.

CS 260 Computational Models

  • 4 hours
  • Prerequisites: CS 160 and CS 165

In this course we examine mathematical structures that are relevant to understanding both theoretical as well as practical ideas in computer science. Topics include: logic, sets, graph theory, regular languages, deterministic and nondeterministic finite automata, regular grammars, regular expressions, induction and recursion, pushdown automata, turing machines, and computability.

CS 296 Writing in the Major Lab

  • 1 hour

A companion to any of CS 320, 330, 352, 353, 360, 370, 420, 430, 440, or 450. Students wishing to delve deeper into a subject in one of the companion courses may register for this lab with consent of instructor. A student taking this lab will be required to write a technical paper in the style typical of a computer science journal or conference proceedings, on a topic agreed to by the companion course instructor. Feedback will be provided on writing style and content with the paper going through multiple revisions. Students receiving a C or better on their paper will fulfill the writing in the major requirement. Students may register for this as a seven week lab anytime prior to the middle of the semester in which the companion course is taught. Requires consent of instructor.

CS 320 Data Analysis and Visualization

  • 4 hours
  • Prerequisites: CS 150 and MATH 115 or the equivalent

A tool based approach to data manipulation, modeling, machine learning, and visualization using one or more packages such as matplotilb, pandas, d3.js, scikit-learn. Topics include data extraction, discovery, cleaning, machine learning algorithms, training procedures, prediction, and visualization. Specific application to real data sets in native formats from actual data sources.

CS 330 Internet Programming

  • 4 hours
  • Prerequisites: CS 130, CS 140 and CS 160

In this course we examine three-tier Internet application architectures. Applications developed for the internet typically have a database back end, an application server in the middle and a web server on the front end. We will examine application programming frameworks from CGI to Servlets, and other modern application programming frameworks such as Ruby on Rails. Other topics include XML-based architectures such as RSS and web services, data transformation using XSL and XSLT. The course is largely project driven, students will implement a complete web based application. HCI is addressed.

CS 352 Embedded Android Programming

  • 4 hours
  • Prerequisites: CS 200 or CS 253

Study Android development with attention to HCI. Taught alternating years.

CS 353 Embedded iOS Programming

  • 4 hours
  • Prerequisites: CS 253

Study iOS development with attention to HCI. Taught alternating years.

CS 360 Advanced Algorithms and Data Structures

  • 4 hours

Development of advanced data structures, parallel algorithms, and advanced analysis of algorithms. Included topics are B-trees, Tries, B+ and B* trees, hashing algorithms and other structures for dealing with large data sets. Algorithms for data set manipulation including parallel algorithms for processing data sets.

CS 370 Programming Languages

  • 4 hours
  • Prerequisites: CS 252 or 253 and 260

A comparison of the structure, design, and applications of various programming languages. Topics include history, language definition, formal models of syntax and semantics, data types and structures, data abstraction, control structures, data flow, and runtime considerations. Languages will be discussed in a logical organization based upon the major paradigms including imperative, logic, functional, and object oriented. Examples from classic and contemporary languages.

CS 385 Understanding Entrepreneurship in Silicon Valley

  • 4 hours
  • Prerequisites: Junior standing

Internet technology has fundamentally changed marketing, communications and the operations of every business in our society. Silicon Valley is home to the people, places and power sources that drive this machine. Students in this J-Term trip will gain both theoretical and tactical understanding of business strategies utilized in the Valley and also have the opportunity to speak with industry leaders and the companies they represent. We will visit companies and key people including entrepreneurs, venture capitalists, engineers and marketing professionals. (Same as MGT 385)

CS 420 Machine Learning

  • 4 hours
  • Prerequisites: CS 260 and 320

This course looks at the implementation of many of the algorithms and techniques introduced in the CS 320 course, including simple neural networks, support vector machines, and clustering techniques. Taught alternating years.

CS 430 Computer Networks

  • 4 hours
  • Prerequisites: CS 252 or 253 and 260

Concepts, principles, protocols, and applications of computer networks with a focus on the Internet, including application layer protocols such as http, smtp; socket programming and peer-to-peer networks; transport-layer protocols such as TCP, UDP and congestion control; network layer algorithms for routing and broadcast, and multicast; link-level protocols for local area networks such as Ethernet and WIFI; and issues in network privacy and security.

CS 440 Database Managment Systems

  • 4 hours
  • Prerequisites: CS 140, 252 or 253 and 260

This course takes a bottom-up approach to understanding a complex software system. The course examines the implementation of a database management system. Topics include disk and file management, transaction processing, meta-data management, query planning and implementation, parsing queries, indexing, query optimization, and B-trees.

CS 450 Operating Systems and Architecture

  • 4 hours
  • Prerequisites: CS 252 or 253 and 260

A study of computer architecture and operating systems structures and algorithms emphasizing multiple-user systems. Topics include binary number systems, digital logic circuits, machine architecture and assembly language, process management, CPU scheduling, concurrency and multi-tasking computing concepts including communication and synchronization issues, storage management, and protection and security.

CS 490 Senior Project

  • 2 hours

Senior computer science majors participate in a substantial, yearlong software development project; CS 490 in the fall, CS 491 in the spring. Students work from conceptualization and design through to implementation and delivery of a real software application.

CS 491 Senior Project

  • 2 hours
  • Prerequisites: CS 490

A continuation of CS 490.