Want to learn more about practical aspects of computer engineering, ranging from command line usage to webapp deployment? Come to Computer Club's Spring 2015 weekly talk series! This semester, we will discuss topics ranging from command line workflows to Node.js. More talks will be added soon!

These talks will take place every Wednesday starting at 8:00 PM in Gates 4301 throughout the semester.

This schedule is also available as an iCalendar file which is compatible with all calendaring software.

Sponsored by Green Hills Software. Green Hills make the world's highest performing compilers, most secure real-time operating systems, revolutionary debuggers, and virtualization solutions for embedded systems.

Useful Command Line Workflows

Use the command line now and then, but find it to be tedious and painful? Just want to sharpen your skills and efficiency with command-line use? In this talk, we will present several slick workflows which allow you to accomplish tasks quickly and efficiently from the command line, from grabbing videos off of YouTube from easily switching between running, compiling, and testing your code.

Elliptic Curve Cryptography

Modern cryptography uses elliptic curves. What is an elliptic curve, and why is it useful for cryptography? And what does this have to do with ellipses, anyway? Come find out.

Introduction to Bitcoin

Bitcoin is the application of cryptography to money. But how can money exist entirely as files on your computer? And how can you use Bitcoin, and what is it useful for? In this talk, we will discuss the inner workings of Bitcoin, what it is useful for and where it is going, and how you can get started with Bitcoin.

Docker and Fig 101

Docker and Fig are cool technologies that allow you to compartmentalize your production workflow in any language. However, we'll discuss how we can use these technologies to improve your development cycle, as well! While we'll be "Dockerizing" a Node.js application, the lessons are applicable to all of the main web development platforms. A basic background with webapps is helpful, but not necessary. No Docker experience needed.

CoffeeScript 101

Check out the language sensation sweeping the nation! Not really, but CoffeeScript is a good way to dramatically increase legibility, avoid some Javascript pitfalls, and otherwise make developing on the client and server easier. We'll open with a discussion of Coffee syntax and set up of the development platform, then run through applying it to the client with JQuery, and on the server with Node.js. JavaScript syntax background is needed.

Vim as an IDE

Vim was designed for the advanced user, and advanced users like complete control over their environment. To fulfill this requirement, Vim comes completely unconfigured--it's a blank slate. The problem is, not everyone's an advanced user! An unconfigured Vim is all but unusable. As it turns out, configuring Vim is very straightforward! In this talk, we'll introduce you to Vim plugins using the plugin manager Vundle. Our goal will be to walk out with a fully configured Vim setup. This includes a pleasant color scheme, fancy status bar indicators, code-aware features, Git integration, and more! Vim has a solution to handle just about anything that a normal IDE would. It's just about knowing where to start.

Node.js 101

This is an introduction to the hot new server paradigm of Node.js. We'll briefly go over how Node.js is different from other platforms like Rails and Django (besides using JavaScript) and when it's best to use it. Then we'll dive in to using Express and Mongo with Jade templating to make a MEN stack application. When you leave, you should be able to build your own web-apps in Node.js. Background in JavaScript syntax is helpful, but not necessary. No web-app experience neeeded.

C++: A less bad systems language

Do you need the performance and control of C but also want convenient features such as type safety, a well-developed standard library, and tools to enable better memory safety? In this talk, we will go over the basics of C++ and discuss design patterns and idioms, such as Resource Acquisition is Initialization, which can be used to develop robust, performant, and elegant code. We will also cover some of the new features in C++11 such as lambdas and move semantics.

Due to overwhelming interest, this talk will be held in Gates 4401 (Rashid Auditorium).

Real-Time Operating Systems

Join Mark Wagner, an Engineering Director at Green Hills Software, for an interactive discussion about examples of complex embedded systems, the safety and security interactions of the components in these systems, and the ways real-time operating systems can secure the interactions.

Haskell: Safe, powerful abstractions

Haskell is a functional programming language designed to make it quick and easy to write correct high-level code. In this talk, we will discuss some common misconceptions about Haskell, introduce basic syntax and semantics, and give a brief, practically-oriented introduction to monads.

sed & awk: ’70s tools still hip today

Providing much of the meat and bones of shell scripting, sed and awk process line-based data into more useful information. This talk will convey how to use these classic tools from the early days of UNIX to do what you need, and how they have influenced other languages.

Verilog & FPGAs: Coding hardware

Ever hear people talking about Verilog or VHDL, and wonder how on earth you can write code that becomes hardware? Attend this talk to learn about hardware description languages and how programmable logic works!

Clojure: An elegant weapon

Clojure is a functional programming language designed for concurrency. It is a dialect of Lisp, and it runs on the JVM. It has an awesome REPL-driven workflow. It makes it trivially easy to use Java libraries and programs in a language that doesn't suck. It is the most popular alternative to using Java on the JVM. It is basically the best thing ever. Want to learn more? Come to this talk.