Data Engineering and Mining (CISC 520)

This course addresses the emerging issues in designing, building, managing, and evaluating advanced data-intensive systems and applications. Data engineering is concerned with the role of data in the design, development, management, and utilization of complex computing/information systems.

Data Structures and Algorithms (CISC 610)

This course emphasizes fundamental algorithms and advanced methods of algorithmic design, analysis and implementation. This class overs techniques used to analyze problems and algorithms (including asymptotic, upper/lower bounds, best/average/worst case analysis, amortized analysis, complexity), basic techniques used to design algorithms (including divide and conquer/greedy/dynamic programming/heuristics, choosing appropriate data structures) and important classical algorithms (including sorting, string, matrix, and graph algorithms) and data structures.

Programming I (CISC 120)

This course introduces the concepts and techniques of computer programming. Emphasis is placed on developing the student’s ability to apply problem-solving strategies to design algorithms and to implement these algorithms in a modern, structured programming language.

Programming II (CISC 140)

This course builds upon fundamental concepts of programming and introduces several more advanced concepts. Emphasis is placed on the practical applications of the techniques and structures, as opposed to abstract theory, in the hopes of rendering the content accessible and useful in the context of using programming as a tool to solve problems.

Smartphone Programming (CISC 349)

This course introduces the student to mobile computing and mobile application design process. This includes designing, implementing, testing, debugging, and publishing smartphone applications with an emphasis on Android mobile operating system.

Newton-Pepys Problem

In this article, I would like to demonstrate an approach for solving relatively simple programming problems, of the sort you may encounter in a 100-level programming course in college. This technique doesn't scale well to large applications, but it does seem a good approach to teach to new programming students.