Tech Talks
Tech Talks are an engineering-focused seminar series. The topics listed here tend to be more practical, rather than theoretical, in focus. Software Engineering and Computer Science students may be especially interested in these topics.
There have been 2 completed talks and 7 topic suggestions tagged with Tech Talks.
Related Tags
- first year friendly
- efficiency
- data science
- computer science
- compiler
- programming language
- functional programming
- statistics
Completed Talks
Total Functional Programming
Delivered by Adam Hofmann on Friday March 3, 2017
Total functional programming is a paradigm of functional programming with the additional restriction that all functions must be total; that is, every function is defined for every element of its domain.
The immediate benefits of total functional programming are clear; every function in a total language is guaranteed to terminate and not cause a runtime error. This talk will cover the basics of writing and understanding functions that are total, as well as benefits that come from having totality.
Also in the scope of this talk is the major trade offs of total functional programming, including Turing completeness and things like input and output that seem unattainable. This is accompanied by strategies to write functions with non-trivial proofs of termination such that totality is guaranteed and verifiable by the interpreter.
Bitcoin and the Blockchain
Delivered by Ben Zhang on Friday February 17, 2017
In this talk, we will learn about the principles behind the Double Spend Problem, the Blockchain, and explore the various ways this technology is being used today.
Transferring money in the physical world is easy. However, the transfer of virtual currency is not as easy to validate. The Double Spend Problem has long stood in the way of a free (libre et gratis) virtual currency, and the world found a need for a third party (usually in the form of large banks) to validate all virtual transactions.
In 2008, a mysterious individual known as Satoshi Nakamoto published a paper titled "Bitcoin: A Peer-to-Peer Electronic Cash System" which describes a system for virtual transactions to be validated through the distributed computing power of the community. The system, known as the Blockchain, uses hashing and non-deterministic mathematics to protect itself from Double Spending attacks. Nakamoto's paper led to the creation of free online currencies such Bitcoin, Litecoin, and Ethereum, which are used in marketplaces today.
Prerequisite Information: Middle school math.
Talk Suggestions
Abstraction in Technical Computing
Scientists, mathematicians, and engineers have an increasing need to write efficient computer programs but they tend to use specific languages for technical computing like Matlab or Mathematica rather than general purpose languages. The suggested reference discusses the properties a general purpose language would need to be able to also handle technical computing – one possibility for allowing efficient technical computing involves a powerful type system and dispatch system to enable generic, staged, and higher-order programming.
Required Background: First year CS at the level of CS 135 and 136.
Possible reference materials for this topic include
Quick links: Google search, arXiv.org search, propose to present a talk
Tech Talks computer science first year friendly polymorphism programming language type theory
Complex Event Processing Systems
The ever-increasing amount of information that needs to be processed has led to the development of Complex Event Processing systems such as Apache Storm or Twitter Heron. These systems distribute a workload over many machines in a cluster, and offer both efficiency and fault-tolerance.
Possible reference materials for this topic include
Kulkarni, S., Bhagat, N., Fu, M., Kedigehalli, V., Kellogg, C., Mittal, S., ... & Taneja, S. (2015, May). Twitter heron: Stream processing at scale. In Proceedings of the 2015 ACM SIGMOD International Conference on Management of Data (pp. 239-250). ACM. doi:10.1145/2723372.2742788
Quick links: Google search, arXiv.org search, propose to present a talk
Tech Talks computer science data science distributed system first year friendly parallel computing statistics
Dealing with Missing Data
Data are rarely perfect. Robust data science tools must have ways to deal with missing data. However, this is not always easy. A balance must be struck between performance and convenience.
Possible reference materials for this topic include
Quick links: Google search, arXiv.org search, propose to present a talk
Tech Talks computer science data science efficiency first year friendly statistics
IEEE 754-2008: Floating Point Arithmetic
Most programming languages provide a floating-point type. What is floating point, and how does it work? What caveats should programmers be aware of?
Possible reference materials for this topic include
Quick links: Google search, arXiv.org search, propose to present a talk
Tech Talks computational mathematics computer science first year friendly floating point number
Jupyter Notebooks
Jupyter Notebooks are a must-have for any data scientist or engineer. They are available for a wide variety of programming languages, particularly Python.
Possible reference materials for this topic include
Quick links: Google search, arXiv.org search, propose to present a talk
Tech Talks data science first year friendly statistics tutorial
Understanding LLVM
The LLVM Compiler Infrastructure Project now powers a wide variety of software, including major programming languages including Rust and Julia, as well as compilers for the popular C and C++ programming languages. Understanding how LLVM works, and being able to read some LLVM bytecode, is extremely useful for optimizing code.
Possible reference materials for this topic include
Quick links: Google search, arXiv.org search, propose to present a talk
Tech Talks compiler computer science efficiency first year friendly programming language
Zero-Cost Abstraction
Computer science is, fundamentally, about abstraction and efficiency. A programmer would rather use high-level bricks to build a product than worry about low-level details. Regrettably, the use of high-level bricks often comes at a cost in efficiency, forcing programmers to worry about low-level details. Recently, many programming languages have begun to stress the importance of zero-cost abstractions: ways to construct high-level bricks with zero efficiency cost.
Possible reference materials for this topic include
Quick links: Google search, arXiv.org search, propose to present a talk
Tech Talks abstraction computer science efficiency first year friendly