Course description

composition and abstraction through functions; introduction to recursion - Floating point numbers, successive refinement, finding roots, Bisection methods, Newton/Raphson, introduction to lists - Lists and mutability, dictionaries, pseudocode, introduction to efficiency - Complexity; log, linear, quadratic, exponential algorithms - Binary search, bubble and selection sorts - Divide and conquer methods, merge sort, exceptions - Testing and debugging -More about debugging, knapsack problem, introduction to dynamic programming - Dynamic programming: overlapping sub problems, optimal substructure - Analysis of knapsack problem, introduction to object - oriented programming-Abstract data types, classes and methods - Encapsulation, inheritance, shadowing

Computational models: random walk simulation - Presenting simulation results, Pylab, plotting - Biased random walks, distributions - Monte Carlo simulations, estimating pi - Validating simulation results, curve fitting, linear regression - normal, uniform, and exponential distributions; misuse of statistics - Stock market simulation - Course overview; what do computer scientists do?

What will i learn?

Requirements

skill expert

Free

Lectures

24

Skill level

Beginner

Expiry period

Lifetime

Certificate

Yes

Related courses

Beginner

Memory Systems

0

(0 Reviews)

Compare

Overview In this course, we first provide a comprehensive overview of memory systems, taking an approach that covers both fundamentals and recent research. We first introduce fundamental principles and ideas, covering DRAM and emerging memory technologies as well as many architectural concepts and ideas related to memory organization, memory control, processing-in-memory, and memory latency / energy / bandwidth / reliability / security / QoS. We discuss major challenges facing modern memory systems (and the computing platforms we currently design around the memory system) in the presence of greatly increasing demand for data and its fast analysis. We examine some promising research and design directions to overcome these challenges. On the research-related part of course (sprinkled across topical lectures), we discuss the following key research topics in detail, focusing on both open problems and potential solution directions: Fundamental issues in memory reliability and security and how to enable fundamentally secure, reliable, safe architectures Enabling data-centric and hence fundamentally energy-efficient architectures that are capable of performing computation near data Reducing both latency and energy consumption by tackling the fixed-latency/energy mindset Enabling emerging memory technologies Enabling predictable and QoS-aware memory systems Research challenges and opportunities in enabling emerging NVM (non-volatile memory) technologies Scaling NAND flash memory and SSDs (solid state drives) into the future

Free

22:36:25 Hours