Skip to content

Commit 4a5eefc

Browse files
committed
Add page “teach”
Also add a blog article announcing the publication of the page. Add a link from the front page to the “teach” page.
1 parent 4595db9 commit 4a5eefc

File tree

8 files changed

+483
-2
lines changed

8 files changed

+483
-2
lines changed

_data/teachers.yml

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
- name: Bartosz Balis
2+
institution: AGH University of Science and Technology, Poland
3+
location:
4+
longitude: 19.9136192
5+
latitude: 50.0668858
6+
- name: Björn Regnell
7+
institution: Lund University, Sweden
8+
location:
9+
longitude: 13.203493
10+
latitude: 55.7119483
11+
- name: Jim Newton
12+
institution: EPITA, France
13+
location:
14+
longitude: 2.3551565
15+
latitude: 48.7979973
16+
- name: Jonathan Brächthaeuser
17+
institution: Tübingen University, Germany
18+
location:
19+
longitude: 9.04158
20+
latitude: 48.5294782
21+
- name: Lalit Pant
22+
institution: Kogics, India
23+
location:
24+
longitude: 77.9469233
25+
latitude: 30.3254097
26+
- name: Laurent Moccozet
27+
institution: Université de Genève, Switzerland
28+
location:
29+
longitude: 6.1429217
30+
latitude: 46.199444
31+
- name: Lionel Parreaux
32+
institution: Hong Kong University of Science and Technology, Hong Kong
33+
location:
34+
longitude: 114.2632715
35+
latitude: 22.3363998
36+
- name: Mark Lewis
37+
institution: Trinity University, United States
38+
location:
39+
longitude: -98.4855322
40+
latitude: 29.4618769
41+
- name: Martin Odersky
42+
institution: École Polytechnique Fédérale de Lausanne, Switzerland
43+
location:
44+
longitude: 6.5600475
45+
latitude: 46.5185825
46+
- name: Michał Kowalczkiwicz
47+
institution: University of Wrocław, Poland
48+
location:
49+
longitude: 17.0322743
50+
latitude: 51.1140086
51+
- name: Michel Schinz
52+
institution: École Polytechnique Fédérale de Lausanne, Switzerland
53+
location:
54+
longitude: 6.5654067
55+
latitude: 46.5189865
56+
- name: Nastaran Fatemi
57+
institution: Haute École d’Ingénierie et de Gestion du canton de Vaud, Switzerland
58+
location:
59+
longitude: 6.6571205
60+
latitude: 46.7792436
61+
- name: Philip Haller
62+
institution: KTH Royal Institute of Technology, Sweden
63+
location:
64+
longitude: 18.0680626
65+
latitude: 59.3498706
66+
- name: Roman Debski
67+
institution: AGH University of Science and Technology, Poland
68+
location:
69+
longitude: 19.9149496
70+
latitude: 50.0689793
71+
- name: Sukyoung Ryu
72+
institution: Korea Advanced Institute of Science and Technology, South Korea
73+
location:
74+
longitude: 127.358196
75+
latitude: 36.3721427

_includes/teachers-map.html

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
{% comment %}
2+
Renders the teachers list to a map.
3+
{% endcomment %}
4+
5+
<link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet.css" integrity="sha512-hoalWLoI8r4UszCkZ5kL8vayOGVae1oxXe/2A4AO6J9+580uKHDO3JdHb7NzwwzK5xr/Fs0W40kiNHxM9vyTtQ==" crossorigin="" />
6+
<script src="https://unpkg.com/[email protected]/dist/leaflet.js" integrity="sha512-BB3hKbKWOc9Ez/TAwyWxNXeoV9c1v6FIeYiBieIWkpLjauysF18NzgR1MBNBXf8/KABdlkX68nAhlwcDFLGPCQ==" crossorigin=""></script>
7+
8+
9+
<div id="teachers-map" style="height: 400px"></div>
10+
11+
<script>
12+
const map = L.map('teachers-map').setView([0, 0], 1);
13+
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
14+
maxZoom: 19,
15+
attribution: '© OpenStreetMap'
16+
}).addTo(map);
17+
L.geoJSON([
18+
{% for teacher in site.data.teachers %}
19+
{
20+
"type": "Feature",
21+
"geometry": {
22+
"type": "Point",
23+
"coordinates": [{{ teacher.location.longitude }}, {{ teacher.location.latitude }}]
24+
},
25+
"properties": {
26+
"popupContent": "{{ teacher.name }} at {{ teacher.institution }}."
27+
}
28+
},
29+
{% endfor %}
30+
], {
31+
onEachFeature: function (feature, layer) {
32+
if (feature.properties && feature.properties.popupContent) {
33+
layer.bindPopup(feature.properties.popupContent);
34+
}
35+
}
36+
}).addTo(map);
37+
</script>

_scala_items/7-education.md

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
---
2+
shortTitle: "Ideal for teaching"
3+
shortDescription: "Scala is ideal for teaching programming to beginners as well as for teaching advanced software engineering courses."
4+
---
5+
6+
<div class="wrap">
7+
<div class="scala-text scala-text-large">
8+
<h3>Readable and Polyvalent</h3>
9+
<p>
10+
Most of the concepts involved in software design directly map
11+
into Scala constructs. The concise syntax of Scala allows the teachers
12+
and the learners to focus on those interesting concepts without dealing
13+
with tedious low-level implementation issues.
14+
</p>
15+
<p>
16+
The example in file <code>HelloWorld.scala</code> below shows how a “hello
17+
world” program looks like in Scala. In <code>Modeling.scala</code>, we show an
18+
example of structuring the information of a problem domain in Scala. In
19+
<code>Modules.scala</code>, we show how to use classes to implement
20+
software modules. Last, in <code>Algorithms.scala</code>, we show how the
21+
standard Scala collections can be leveraged to implement algorithms with
22+
few lines of code.
23+
</p>
24+
<p>
25+
Learn more in the dedicated page about
26+
<a href="{% link teach.md %}">Teaching</a>.
27+
</p>
28+
</div>
29+
30+
<div class="scala-code">
31+
32+
<div class="code-element">
33+
<div class="bar-code"><span>HelloWorld.scala</span></div>
34+
<pre><code>@main def run() = println("Hello, World!")</code></pre>
35+
</div>
36+
37+
<div class="code-element">
38+
<div class="bar-code"><span>Modules.scala</span></div>
39+
<pre><code>// A module that can access the data stored in a database
40+
class DatabaseAccess(connection: Connection):
41+
def readData(): Seq[Data] = ???
42+
43+
// An HTTP server, which uses the `DatabaseAccess` module
44+
class HttpServer(databaseAccess: DatabaseAccess):
45+
// The HTTP server can call `readData`, but it cannot
46+
// access the underlying database connection, which is
47+
// an implementation detail
48+
databaseAccess.readData()</code></pre>
49+
</div>
50+
51+
</div>
52+
53+
<div class="scala-code">
54+
55+
<div class="code-element">
56+
<div class="bar-code"><span>Modeling.scala</span></div>
57+
<pre><code>/** A Player can either be a Bot, or a Human.
58+
* In case it is a Human, it has a name.
59+
*/
60+
enum Player:
61+
case Bot
62+
case Human(name: String)</code></pre>
63+
</div>
64+
65+
<div class="code-element">
66+
<div class="bar-code"><span>Algorithms.scala</span></div>
67+
<pre><code>// Average number of contacts a person has according to age
68+
def contactsByAge(people: Seq[Person]): Map[Int, Double] =
69+
people
70+
.groupMap(
71+
person => person.age
72+
)(
73+
person => person.contacts.size
74+
)
75+
.map((age, contactCounts) =>
76+
val averageContactCount =
77+
contactCounts.sum.toDouble / contactCounts.size
78+
(age, averageContactCount)
79+
)</code></pre>
80+
</div>
81+
82+
</div>
83+
</div>
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
---
2+
layout: blog-detail
3+
post-type: blog
4+
by: Julien Richard-Foy (Scala Center)
5+
title: "Teach Programming with Scala"
6+
---
7+
8+
Scala is more than a great programming language for building software.
9+
It is also a great tool for teaching programming!
10+
11+
We are happy to announce that we have published a [new page][teach] on the
12+
website to explain the benefits of using Scala to teach programming, and to
13+
show a map of the universities who use Scala around the world (also shown below).
14+
15+
{% include teachers-map.html %}
16+
17+
*Teachers who use Scala in their course.*
18+
19+
## Motivation
20+
21+
Since Scala embraces several programming paradigms, it can be used to introduce
22+
many important concepts involved in computational thinking, from the most basic
23+
ones to the most advanced ones. It is suitable to teach programming to
24+
beginners, as well as to teach advanced software engineering courses.
25+
26+
However, until now it was not easy to know which institutions use Scala. This
27+
information can be useful for students, PhD candidates, teachers looking for
28+
possible teaching connections, and companies interested in hiring new Scala
29+
developers.
30+
31+
## Teach with Scala
32+
33+
In the new [“Teach”][teach] page, we explain why we think Scala is a great tool
34+
for teaching programming, with evidence from several teachers around the world:
35+
36+
- Scala supports multiple programming paradigms, which helps compare and contrast
37+
different solutions to programming problems,
38+
- Scala is expressive: students can focus on the intent of their program without
39+
being distracted by low-level concerns or syntactic noise,
40+
- Thanks to its type system, the Scala compiler helps the students to find bugs
41+
before run-time,
42+
- Scala’s constructs are regular and principled,
43+
- Best practices are the norm (e.g., limited usage of `null`),
44+
- Scala runs on the JVM and on JS runtimes,
45+
- Scala’s ecosystem is large, and it can leverage the JVM and JS ecosystems,
46+
- Scala is versatile, it can be used to build many kinds of programs.
47+
48+
The page also shows a map of teachers who use Scala in their courses.
49+
50+
Finally, it provides several pointers to educational material.
51+
52+
## Join the Movement
53+
54+
We welcome all the teachers who use Scala to [contribute] to this page by:
55+
- adding themselves to the map of teachers,
56+
- refining the content,
57+
- providing testimonials, such as a single short sentence that summarizes
58+
why you like using Scala to teach, or a sentence about a specific aspect
59+
of the language that works well for you.
60+
61+
Last but not least, we have set up a [community of teachers] where you can
62+
exchange best practices and work together on tools to improve your experience
63+
as teachers.
64+
65+
[teach]: {% link teach.md %}
66+
[community]: https://teachers.scala-lang.org
67+
[contribute]: mailto:[email protected]?subject=Teaching

community/index.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,14 @@ participation in all of these efforts is strongly encouraged.
3333

3434
## Forums
3535

36-
The Scala Center operates two Discourse forums:
36+
The Scala Center operates the following Discourse forums:
3737

3838
* **[users.scala-lang.org](https://users.scala-lang.org)**: The main forum for questions, discussions, and announcements about programming in Scala. Beginner questions are very welcome. Any question can and should receive a courteous and insightful answer. (Replaces the old scala-user and scala-announce groups.)
3939

4040
* **[contributors.scala-lang.org](https://contributors.scala-lang.org)**: For anything related to moving Scala forward; from Scala Platform library discussions, to Scala Improvement Process discussions, to development work on the Scala compiler, standard library, and modules. Core maintainers and open-source contributors are both welcome, as well as those who want to see what’s coming down the pipe and would like to be involved. (Replaces the old scala-internals, scala-language, scala-debate, scala-sips, and scala-tools groups.)
4141

42+
* **[teachers.scala-lang](https://teachers.scala-lang.org)**: Discussions related to the usage of Scala to teach programming: material, tooling, guidelines.
43+
4244
Discourse is an open-source forum and mailing list platform. You can participate via the web, or you can use "mailing list mode", where you receive posts in your inbox and can reply to them via email. The web interface provides statistics, upvoting, polls, and other features. Posts can be written in Markdown, including syntax highlighting.
4345

4446
These forums are covered by the [Scala Code of Conduct](../conduct.html).
@@ -156,7 +158,7 @@ items and opinions. Ask your Scala friends who they follow on Twitter
156158
Finding libraries:
157159

158160
* [Scaladex](https://index.scala-lang.org), maintained by the Scala Center, is "an index of the known Scala ecosystem"
159-
* [Awesome Scala](https://github.com/lauris/awesome-scala) is "a community driven list of useful Scala libraries, frameworks and software"
161+
* [Awesome Scala](https://index.scala-lang.org/awesome) is "a community driven list of useful Scala libraries, frameworks and software"
160162
* [Typelevel.org](https://typelevel.org) provides an assortment of popular libraries and extensions to Scala.
161163
* [Trending Scala repositories](https://github.com/trending?l=scala&since=monthly) on GitHub
162164

resources/img/kojo.png

461 KB
Loading

resources/img/scalabridge.png

9.3 KB
Loading

0 commit comments

Comments
 (0)