Colloquium Archive

System Resilience: Amplify Failures, Detect, or Both?

Ganesh Gopalakrishnan (ACM Distinguished Speaker)
Professor
University of Utah

03/16/2022

As we cram billion of transistors into a chip, and build computers with thousands of such chips, the probability of system state bits transiently getting corrupted due to system noise and high energy particle strikes goes up. Such "soft errors" factors are exacerbated by manufacturing variability that is higher in smaller lithographies.

Many types of software-based error detectors have been proposed to detect these soft errors and trigger recomputation from state checkpoints.  Unfortunately, most of these detection schemes introduce unacceptable computational overheads and also have unacceptably high false positive rates.

In one line of work, we have ameliorated this situation by focusing on applications such as stencils.  In this domain, we guarantee near 100% detection based on rigorous floating-point error analysis based on affine arithmetic.  We also reduce overheads by covering multiple steps of the stencil application per detector deployment.

The main take-away message is that system resilience solutions developed with attention to higher accuracy and lower overheads may prove to be the inevitable safety net based on which designers attempt to reduce energy consumption in this period of ending Moore's law.

Robots in CS1: Overview, Bluetooth, Tone Generation, and Testing with eSpeak

Henry Walker
Professor Emeritus of Computer Science and Mathematics
Grinnell College

03/30/2022

As the Computer Science Curriculum continues to evolve at Sonoma State University, a new approach for CS 115, Programming I, is being offered for one section in Spring 2022. Continuing long-standing themes, fundamental concepts (e.g., from the University Catalog) continue, including imperative problem solving, variables and expressions, conditional statements, iteration, simple I/O, program organization, program style and maintainability, and structure programming. However, four elements are rather different from recent offerings of the course:

  • Programs utilize the C programming language (e.g., neither Python nor C++).
  • The control of robots serves as an on-going application theme.
  • With the use of C, considerable attention is devoted to low-level elements of computing (e.g., the run-time stack, addressing, and data representation).
  • The course follows a lab-based pedagogy, in which lectures and labs will be integrated---students work collaboratively on a new lab almost every day (about 40 labs for the semester).

As background, this course has evolved with development by the speaker with several student teams since Summer 2011, and the approach has been used in introductory courses at Grinnell College, the University of the South, Williams College, and the University of Puget Sound.

This talk with begin with an overview of the course and a demonstration of some robot capabilities.  The presentation will continue with a discussion of selected technical elements, including basics of Bluetooth communication, tone generation with both blocking and non-blocking commands, and the use of a speech synthesizer as part of program testing.

TBD

Todd Ziesing
Terrace Consulting, Inc.

04/06/2022

The presentation will be split into several pieces - all focused on Enterprise Technology application(s) for a fictitious company.  The first part of the presentation will set the context of what we do - analyze, design, develop and implement Enterprise Technology to enable eCommerce, Supply Chain, ERP and Business Intelligence.  This will be a high-level overview to establish context.  After that we're going to present a pro-forma project focused on B2B Supply Chain enablement for a fictitious logistics company.  We'll discuss the need to design and develop a custom solution as there was no "out of the box" solution suitable to the problem set.  After that we'll discuss the analysis phase of the project (gathering requirements), the design phase (technical design / enterprise architecture), the execution of the project (Agile Sprint Plan), the deployment of the solution and the implementation of CICD to enable continuous updating and improvement.  All this will be presented mostly via graphics with a minimum of text so the concepts will be simpler to grasp.

Improving code quality through Test-Driven Development

Daniel Holz ('16)
Ciena

04/13/2022

Test-Driven Development (TDD) is a software development technique that relies on test cases to be written prior to implementation code. In this talk I will discuss in detail how TDD is practiced, the impact it has on the design and maintainability of software, and share my experiences developing enterprise-scale software both with and without TDD.

Performance Matters

Emery Berger
Professor
University of Massachusetts Amherst

04/20/2022

Performance clearly matters to users. For example, the most common software update on the AppStore is "Bug fixes and performance enhancements." Now that Moore's Law has ended, programmers have to work hard to get high performance for their applications. But why is performance hard to deliver?

I will first explain why current approaches to evaluating and optimizing performance don't work, especially on modern hardware and for modern applications. I then present two systems that address these challenges. Stabilizer is a tool that enables statistically sound performance evaluation, making it possible to understand the impact of optimizations and conclude things like the fact that the -O2 and -O3 optimization levels are indistinguishable from noise (sadly true).

Since compiler optimizations have run out of steam, we need better profiling support, especially for modern concurrent, multi-threaded applications. Coz is a new causal profiler that lets programmers optimize for throughput or latency, and which pinpoints and accurately predicts the impact of optimizations. Coz's approach unlocks previously unknown optimization opportunities. Guided by Coz, we improved the performance of Memcached (9%), SQLite (25%), and accelerated six other applications by as much as 68%; in most cases, this involved modifying less than 10 lines of code and took under half an hour (without any prior understanding of the programs!). Coz now ships as part of standard Linux distros (apt install coz-profiler).

Pages