Computer Science after college


Jimmy Schementi

A decade ago

CS 3733

B-Term 2004

Exercise Logbook


Biggest Risk?

Integration


So, eliminate the risk.

Me: So, we want to do this thing...


Gary: Well, you're not doing anything against the rules...


Me: Wait, what? Really!?

Gary: Well, that makes sense.


Codequak Inc.

Build awesome stuff

Leaf


Interviewing

Algorithms

Fibonacci

def fib(n):
    if n == 0:
        return 0
    if n <= 2:
        return 1
        
    return fib(n - 1) + fib(n - 2)
    

O(2^n)

(technically O(1.618^n))

We can do much better

cache = {}

def fib(n):
    if n == 0:
        return 0
    if n <= 2:
        return 1
        
    value = cache.get(n)
    if value
        return value
        
    value = fib(n - 1) + fib(n - 2)
    cache[n] = value
    return value
    

O(n)

Call repeatedly, O(1)

Other interview questions/topics

Expect

Whiteboard

and

Live coding


(+1 for the latter)

"Critical" "Thinking"

Full Stack

vs.

XYZ Tech


Breadth vs. depth?

WPI prepares you to be a

full-stack engineer

Break a leg!

We are

Software Engineers


We are NOT

Ninjas

or

Rock stars


(oh, recruiters...)

We build things that have

never been built before

Software Engineering

The study and application of engineering to the design, development, and maintenance of software.

Engineering

The application of scientific, economic, social, and practical knowledge in order to invent, design, build, maintain, and improve structures, machines, devices, systems, materials and processes.

Development Process

Everyone does it differently

Let's be honest

We don't know

what we're doing

Pick the right process

for the project and team

Shipping

is all that matters

The good things

Version Control


Code Review

Continuous Integration/Build/Deploy

DevOps

Automation

Actually building

the damn thing

Stream all the things

Reader

var readable = getReadableStreamSomehow();
readable.on('data', function(chunk) {
  console.log('got %d bytes of data', chunk.length);
});
readable.on('end', function() {
  console.log('there will be no more data.');
});

Writer

http.createServer(function (req, res) {
  res.write('hello, world');
  res.end();
});

Threads

Here be dragons

Types Good

type User struct {
  Username string
  Password string
}
func LoadUser(user *User) {
  // knows what fields a user has
}

Anonymous types evil

function loadUser(user) {
  // WTF is a user?
}

Learn many many programming languages

"Frameworks"

Just build great apps

});

Jimmy Schementi


http://schementi.com

@jschementi