-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathScala-Fundamentals.html
119 lines (115 loc) · 11.1 KB
/
Scala-Fundamentals.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta name="generator" content="pandoc" />
<meta name="author" content="" />
<meta name="date" content="2016-10-22" />
<title>Scala Fundamentals Workshop</title>
<style type="text/css">code{white-space: pre;}</style>
<link rel="stylesheet" href="css/html.css" type="text/css" />
</head>
<body>
<div id="header">
<h1 class="title">Scala Fundamentals Workshop</h1>
<h2 class="author"></h2>
<h3 class="date">October 22, 2016</h3>
</div>
<h1 id="introduction">Introduction</h1>
<p>PHASE is proud to bring you its first formal training event for the fastest growing programming language on the planet.</p>
<p>The instructors for this event have been carefully selected from the Philadelphia technology community and all are experienced Scala developers as well as seasoned presenters.</p>
<p>Your organizers and instructors for this event are all volunteers and represent themselves and not their respective organizations.</p>
<h1 id="prerequisites">Prerequisites</h1>
<p>Attendees are expected to have programming aptitude and experience, but there are no Scala or Functional Programming prerequisites. <strong>Any</strong> programming experience in <strong>any</strong> language is sufficient to participate in the workshop.</p>
<h1 id="venue">Venue</h1>
<p>A special thank you to <a href="https://www.cerner.com/">Cerner Corporation</a> for providing the venue for this event.</p>
<div style="white-space: pre-line;"><img src="sponsor-logos/cerner.png" />
51 Valley Stream Parkway
Malvern, PA 19355</div>
<p><a href="https://www.google.com/maps?f=q&hl=en&q=51+Valley+Stream+Parkway,+Malvern,+PA,+19355,+us">Map</a></p>
<h1 id="entry">Entry</h1>
<p>All people attending the workshop <strong>must</strong> enter <strong>Building I</strong> from the MAIN entrance at 51 Valley Stream Parkway. The main entrance offers attendees a wealth of visitor parking spaces. Event organizers will be at the door on Saturday morning to greet the attendees and direct them to the auditorium for the workshop. Signage will be posted throughout the buildings to guide people on their way.</p>
<h1 id="transportation">Transportation</h1>
<p>If you require transportation from the Paoli train station to the venue, please contact the organizers and they will coordinate with you to make the appropriate arrangements.</p>
<p>There is ample free parking for those arriving by car.</p>
<h1 id="what-to-bring">What to Bring</h1>
<h2 id="laptop">Laptop</h2>
<p>Attendees should bring a personal laptop so that they may follow along with the exercises and instruction. Wireless Internet access will be provided.</p>
<p><strong>Computers will <em>not</em> be provided.</strong></p>
<h2 id="software">Software</h2>
<p>Please make sure you have a recent copy of either Chrome or Firefox. The workshop will be conducted entirely using browser-based tools. Specifically, attendees to not need to install Scala, SBT, or an IDE to participate in this workshop.</p>
<h2 id="wifi">WiFi</h2>
<p>WiFi access <em>will be provided</em></p>
<div style="white-space: pre-line;"><strong>SSID</strong>: Guest-Secure
<strong>Password</strong>: <code>Packet$pe@kerPictur3Ch@ir</code></div>
<h2 id="databricks-community-edition-account">Databricks Community Edition account</h2>
<p>Please sign up for a Databricks Community Edition account (<a href="https://databricks.com/ce">databricks.com/ce</a>) before the class. We will be doing our training on that platform.</p>
<p>The instructors will be presenting using Scala notebooks created on this platform.</p>
<p>If you can, please spend a little time familiarizing yourself with the platform. But don’t worry too much: We’ll be going over it, briefly, at the beginning of the workshop.</p>
<p>You can find a cheat sheet at <a href="http://tinyurl.com/databricks-cheat-sheet" class="uri">http://tinyurl.com/databricks-cheat-sheet</a></p>
<h1 id="schedule">Schedule</h1>
<h2 id="breakfast">8:30 — 9:30 Breakfast</h2>
<h2 id="welcome">9:00 — 9:05 Welcome</h2>
<h2 id="basic-types-and-expressions">9:05 — 10:05 Basic Types and Expressions</h2>
<p><strong>Presented by: Sujan Kapadia</strong></p>
<ul>
<li>Basic types and expressions Numeric Literals and Strings</li>
<li>Values, Vars</li>
<li>Immutability and Mutability Referential Transparency For Values Object Equality</li>
<li>String Interpolation Conditionals</li>
<li>Blocks, Blocks as Expressions</li>
<li>Tuples</li>
<li>Exposure to ScalaDocs and Language Specification</li>
</ul>
<h2 id="functions">10.05 — 11:05 Functions</h2>
<p><strong>Presented by: Brad Miller</strong></p>
<h2 id="break">11.05 — 11:20 Break</h2>
<h2 id="collections-option">11:20 — 12:20 Collections & Option</h2>
<p><strong>Presented by: Martin Snyder</strong></p>
<ul>
<li>Filter</li>
<li>Map</li>
<li>Flatten</li>
<li>FlatMap</li>
</ul>
<h2 id="lunch">12:20 — 1:15 Lunch</h2>
<h2 id="miscellany">1:15 — 1:45 Miscellany</h2>
<p><strong>Presented by: Marcus Henry</strong></p>
<ul>
<li>Namespaces</li>
<li>Packages</li>
<li>Import mechanics, including aliasing</li>
<li>Package objects</li>
<li>Types: <code>Any</code>, <code>AnyRef</code>, <code>Nothing</code></li>
<li>What’s the point of <code>Any</code> and <code>Nothing</code>?</li>
</ul>
<h2 id="classes-traits-and-objects">1:45 - 2:45 Classes, Traits and Objects</h2>
<p><strong>Presented by: Brian Clapper</strong></p>
<h2 id="break-1">2:45 - 3:00 Break</h2>
<h2 id="case-classes-pattern-matching-and-adts">3:00 - 4:00 Case Classes, Pattern Matching, and ADTs</h2>
<p><strong>Presented by: Michael Pilquist</strong></p>
<ul>
<li>Case classes</li>
<li><code>apply()</code> methods</li>
<li>Pattern Matching</li>
<li>Algebraic Data Types</li>
</ul>
<h2 id="for-comprehensions">4:00 - 5:00 For Comprehensions</h2>
<p><strong>Presented by: Marcus Henry</strong></p>
<h2 id="closing-remarks">5:00 - 5:05 Closing Remarks</h2>
<h1 id="instructor-bios">Instructor Bios</h1>
<h2 id="brian-clapper-brianclapper-linkedin">Brian Clapper: <a href="https://twitter.com/brianclapper">@BrianClapper</a> / <a href="https://www.linkedin.com/in/bclapper">LinkedIn</a></h2>
<p>Brian currently works at <a href="https://databricks.com">Databricks</a>, leading curriculum development, managing instructor preparation, and doing occasional <a href="http://spark.apache.org/">Apache Spark</a> application development. He also has his own consulting company, <a href="https://www.ardentex.com">ArdenTex</a>, and, prior to taking the position at Databricks, worked as an independent consultant for 7 years. Brian has more than 30 years’ experience developing software, both frontend and backend, across many industries. He founded and co-organizes the <a href="http://scala-phase.org">Philly Area Scala Enthusiasts</a> (PHASE) Scala user group. He is also a co-organizer of the annual <a href="http://nescala.org">Northeast Scala Symposium</a> and has served on the organizing committee for the <a href="https://phillyemergingtech.com">Philly ETE</a> conference.</p>
<h2 id="marcus-henry-dreadedsoftware-linkedin">Marcus Henry (<a href="https://twitter.com/dreadedsoftware">@DreadedSoftware</a> / <a href="https://www.linkedin.com/in/dreadedsoftware/">LinkedIn</a>)</h2>
<p>Marcus Henry is a Software Developer for <a href="http://www.integrichain.com/">Integrichain</a>, a company which provides actionable data insights for the life sciences. He develops mostly in functional Scala to deliver responsive, multi threaded solutions using Akka, Futures and FS2.</p>
<h2 id="sujan-kapadia-sujankapadia">Sujan Kapadia (<a href="https://twitter.com/sujankapadia%5D%20/%20%5BLinkedIn%5D(https://www.linkedin.com/in/sujankapadia/)">@SujanKapadia</a></h2>
<p>Sujan Kapadia is Director of Consulting at <a href="https://chariotsolutions.com/">Chariot Solutions</a> in Fort Washington.</p>
<h2 id="brad-miller-blog-linkedin">Brad Miller (<a href="http://www.bradfordmiller.org/">Blog</a> / <a href="https://www.linkedin.com/in/brad-miller-89b5194/">LinkedIn</a>)</h2>
<p>Brad is a veteran software developer with expertise across a wide range of technologies. He has written software in Java, Scala, C#, and Python with a variety of databases and has deep experience in the design and implementation of concurrent, loosely coupled, scalable applications and processing large (terabytes) data sets in a big data environment. Brad’s current work involves the implementation of an actor system in Scala and Akka for an enterprise-wide data synchronization platform. Brad’s computing interests include reactive programming, graph processing, event-based actor frameworks, publish-subscribe architectures, web-scraping, bot development, and functional programming.</p>
<h2 id="michael-pilquist-mpilquist-linkedin">Michael Pilquist (<a href="https://twitter.com/mpilquist">@MPilquist</a> / <a href="https://www.linkedin.com/in/michael-pilquist-82237033/">LinkedIn</a>)</h2>
<p>Michael Pilquist is the author of Scodec, a suite of open source Scala libraries for working with binary data, and Simulacrum, a library that simplifies working with type classes. He is also a committer on a number of other projects in the Scala ecosystem, including Cats and FS2. He is also the chief software architect at Combined Conditional Access Development (CCAD), a joint venture between Comcast and ARRIS, Inc., where he is responsible for the design and development of control systems that manage tens of millions of cable system devices, including set-top boxes and head-end equipment.</p>
<h2 id="martin-snyder-martinsnyder-blog-linkedin">Martin Snyder (<a href="https://twitter.com/martinsnyder">@MartinSnyder</a> / <a href="http://martinsnyder.net/">Blog</a> / <a href="https://www.linkedin.com/in/martinsnyder/">LinkedIn</a>)</h2>
<p>As Chief Technology Officer for <a href="http://www.wingspan.com/">Wingspan Technology, Inc.</a>, Martin is responsible for technology and software engineering leadership. He brings over 20 years of experience as an executive and architect for enterprise applications, integration, and document management for global enterprise applications. Wingspan creates document management applications for regulated industries. Prior to joining Wingspan, Martin founded and operated <a href="http://ethermoon.com/main/index.html">Ethermoon Entertainment</a>, a video game development company and was the CTO of Apricus, a clinical data company. He has held leadership positions in Philadelphia, Boston, and Silicon Valley. Martin has also published and presented on a variety of topics over the years, most recently on the Scala programming language and Functional Programming. Martin is active in the Philadelphia software development community serving as an organizer for <a href="https://www.meetup.com/PhillyJUG/">Philly JUG</a>, <a href="http://scala-phase.org">PHASE</a>, <a href="https://phillyemergingtech.com">Philly ETE</a>, and the <a href="http://nescala.org">Northeast Scala Symposium</a>. Martin graduated from Cornell University and holds a BS in Computer Science.</p>
</body>
</html>