Lecture

Introduction and Goals of the Course

This module introduces students to the objectives of the course and the fundamental concepts of computation. Participants will learn about:

  • The goals of the course.
  • What computation entails.
  • The basics of data types, operators, and variables.

Students will gain an understanding of how computation can be applied to solve real-world problems.


Course Lectures
  • This module introduces students to the objectives of the course and the fundamental concepts of computation. Participants will learn about:

    • The goals of the course.
    • What computation entails.
    • The basics of data types, operators, and variables.

    Students will gain an understanding of how computation can be applied to solve real-world problems.

  • Operators and Operands
    Eric Grimsom

    In this module, students will explore the essential components of programming, focusing on:

    • Operators and operands.
    • Creation of statements.
    • Implementing branching and conditionals.
    • Understanding iteration and loops.

    Through practical examples, students will learn how to control the flow of their programs effectively.

  • Common Code Patterns
    Eric Grimsom

    This module covers common coding patterns, particularly focusing on iterative programming. Students will learn:

    • How to create iterative solutions to problems.
    • Common patterns used in iterative programming.
    • Best practices for writing clean, effective code.

    By understanding these patterns, students will enhance their problem-solving capabilities.

  • This module introduces the concepts of decomposition and abstraction through functions. Students will discover:

    • How to break problems into smaller, manageable parts.
    • The importance of functions in programming.
    • An introduction to recursion and its applications.

    These concepts are fundamental for writing modular and reusable code.

  • Floating Point Numbers
    Eric Grimsom

    This module focuses on floating point numbers and their significance in programming. Key topics include:

    • Understanding floating point representation.
    • Applying successive refinement techniques.
    • Methods for finding roots of equations.

    Students will learn how to handle real-number computations in their programs.

  • Bisection Methods
    Eric Grimsom

    This module introduces bisection methods and the Newton/Raphson technique for finding roots. Key areas of focus include:

    • Understanding the principles of bisection methods.
    • Applying the Newton/Raphson method for root finding.
    • An introduction to lists and their role in programming.

    Students will learn how to solve equations numerically using these methods.

  • Lists and Mutability
    Eric Grimsom

    This module addresses lists and mutability, alongside dictionaries and pseudocode. Students will learn:

    • The concept of lists and their mutability in programming.
    • How to utilize dictionaries for key-value storage.
    • The importance of pseudocode in algorithm design.
    • Introduction to efficiency in programming.

    Understanding these data structures is essential for efficient coding.

  • Complexity
    Eric Grimsom

    This module dives into computational complexity, defining various algorithmic complexities. Students will explore:

    • Logarithmic, linear, quadratic, and exponential algorithms.
    • How to analyze the efficiency of algorithms.
    • Real-world implications of algorithmic complexity.

    Students will learn to evaluate algorithms beyond mere functionality.

  • Binary Search
    Eric Grimsom

    This module teaches students about binary search and sorting algorithms. Key areas include:

    • How to implement binary search for efficient data retrieval.
    • Understanding bubble sort and selection sort algorithms.
    • Comparing sorting algorithms based on efficiency.

    Students will learn how to optimize data searching and organization.

  • This module covers divide and conquer methods, focusing on their application in algorithms. Students will explore:

    • The principles of divide and conquer.
    • Implementing merge sort for efficient sorting.
    • Understanding exception handling in programming.

    These techniques are fundamental for writing efficient algorithms.

  • Testing and Debugging
    Eric Grimsom

    This module focuses on testing and debugging, essential skills for any programmer. Students will learn:

    • The importance of testing code for functionality.
    • Common debugging techniques and tools.
    • Strategies for efficient debugging.

    Students will develop the skills necessary to identify and fix issues in their code.

  • Knapsack Problem
    Eric Grimsom

    This module covers the knapsack problem and introduces dynamic programming. Students will explore:

    • The knapsack problem and its real-world applications.
    • Dynamic programming techniques for optimal solutions.
    • Debugging strategies specific to dynamic programming problems.

    Students will learn how to approach complex problems using dynamic programming.

  • Dynamic Programming
    Eric Grimsom

    This module delves into dynamic programming concepts, focusing on:

    • Overlapping subproblems and their significance.
    • Optimal substructure in problem-solving.
    • Strategies for developing dynamic programming solutions.

    Students will learn how to break down and solve complex problems efficiently.

  • This module introduces object-oriented programming (OOP) principles. Key topics include:

    • Analysis of the knapsack problem through OOP approaches.
    • Understanding classes and objects in programming.
    • Designing programs using OOP principles.

    Students will gain insights into structuring code for better organization and reusability.

  • This module focuses on abstract data types, classes, and methods. Students will learn about:

    • Defining and using abstract data types.
    • Creating classes and understanding their methods.
    • The role of encapsulation in programming.

    These concepts are vital for effective software development.

  • Encapsulation
    Eric Grimsom

    This module covers encapsulation, inheritance, and shadowing in programming. Key points include:

    • The concept of encapsulation in OOP.
    • Understanding inheritance and its benefits.
    • Dealing with shadowing in inheritance hierarchies.

    Students will learn how to design flexible and efficient code using these principles.

  • Computational Models
    Eric Grimsom

    This module introduces computational models, focusing on simulations. Key topics include:

    • Understanding random walk simulations.
    • Applications of simulations in computational models.
    • How to analyze and interpret simulation results.

    Students will learn the significance of simulations in understanding complex systems.

  • This module focuses on presenting simulation results effectively. Students will learn:

    • How to use Pylab for visualizing data.
    • Techniques for plotting results clearly.
    • Best practices for communicating findings from simulations.

    Effective presentation of results is crucial for conveying insights gained from simulations.

  • This module introduces digital communication within the scope of computer science. Students will discover:

    • An overview of the course and its relevance.
    • The various roles computer scientists play in society.
    • How digital communication impacts the field of computer science.

    Students will gain a broader understanding of the significance of computer science beyond programming.

  • Biased Random Walks
    Eric Grimsom

    This module examines biased random walks and distributions. Key concepts include:

    • The theory behind biased random walks.
    • Different types of distributions and their characteristics.
    • Applications of random walks in various fields.

    Students will learn to analyze and interpret random processes.

  • This module covers Monte Carlo simulations, focusing on their applications and techniques. Students will learn about:

    • The fundamentals of Monte Carlo simulations.
    • How to estimate pi using simulation techniques.
    • Applications of Monte Carlo methods in real-world scenarios.

    Students will gain insights into the power of simulations for solving complex problems.

  • This module focuses on validating simulation results. Key topics include:

    • Methods for validating the accuracy of simulations.
    • Curve fitting techniques for data analysis.
    • Introduction to linear regression and its applications.

    Students will learn to ensure the reliability of their simulation outputs.

  • This module examines normal, uniform, and exponential distributions, along with common statistical misuses. Students will understand:

    • Characteristics of different statistical distributions.
    • Applications of these distributions in data analysis.
    • Common pitfalls in interpreting statistical results.

    Students will gain a solid foundation in statistical concepts critical for data-driven decision-making.

  • This module introduces stock market simulation, providing students with insights into financial modeling. Key topics include:

    • Basics of stock market dynamics.
    • Simulating stock market scenarios for analysis.
    • Understanding the impact of various factors on stock prices.

    Students will learn how simulations can inform investment strategies and financial decisions.