Teaching C++ Workshop

Meet, Learn, Discuss, Improve


The Teaching C++ workshop is going to take place at the Academic College of Tel-Aviv-Yaffo, on May 16th-17th, 2019, two half days: Thursday afternoon and Friday morning.

The goals of the workshop are to discuss and present insights, teaching materials and other issues related to Teaching C++, and to meet and build a community of C++ Teachers. The workshop is related to the ISOCPP group of C++ Education: SG20.

The workshop addresses “C++ Language Teachers” as well as teachers that use or practice C++ in their courses and practitioners who are interested in the domain of Teaching C++.

Registration

The workshop is co-located with the Core C++ Conference, taking place at the same venue on May 14th-17th.
You may join both the workshop and the conference or the Teaching C++ workshop alone.

Workshop registration:

Registration is now closed

Important Dates



Submissions due date:    March 15 -- Closed

Acceptance notification:    March 25 -- Done

Registration closes:    April 10

Agenda

Thursday May 16th

13:00 - 13:30  Welcome and Coffee  (Economics 206)
13:30 - 15:20  What's new: C++11 to C++20  (Economics 206)
 13:30 - 14:20   Features from C++11 and C++14 - Amir Kirsh (Tel-Aviv-Yaffo Academic College)
 14:20 - 14:30   Short break
 14:30 - 15:20   Features from C++17 and C++20 - Yehezkel Bernat (Hadassah Academic College)
15:30 - 17:40  Joining the Core C++ Conference  (Weston Auditorium)
 15:30 - 17:00   Closing keynote of the Core C++ Conference
 17:00 - 17:20   Closing remarks of the Core C++ Conference
 17:20 - 17:40   Coffee Break
17:40 - 18:20  Teaching C++ Panel  (Weston Auditorium)
  Michal Alhanaty (Hadassah Academic College), Yechiel Kimchi (Technion), Amir Kirsh (Academic College of Tel-Aviv-Yaffo), Meir Komar (Lev Academic Center), Adina Milston (Lev Academic Center). Moderator: Iris Gaber (Academic College of Tel-Aviv-Yaffo)
18:20 - 19:20Meet & Eat: Teaching C++ Social Dinner

Friday May 17th
(Economics 206 - All day)

8:30 - 9:00  Welcome and Coffee
9:00 - 9:10  Opening
9:10 - 9:40  Joyce Vogel (Lev Academic Center): Teaching C++ in a Distance Learning Environment
  The introductory course to computer science is traditionally taught using a programming language such as C++. A typical lecture includes students from all backgrounds and abilities. Effectively teaching such a course to such a wide variety of students can be challenging. One way to solve this issue is to allow students to take an online version of the course.
The presentation will demonstrate how a well constructed online version of the course can solve the problems that arise from a diversified student population. In particular, I will introduce key elements that promote active student learning.
We have seen that a well constructed online course achieves a higher degree of student learning and understanding of C++. Students remained actively engaged throughout the course. There was a higher rate of students who not only mastered the presented material, but, went on to research topics that interested them that were not covered by the course. There was also a lower rate of students who got frustrated and dropped the course.
9:40 - 10:10  Yossi Gil (Technion): Programming with Generics, Complexity and Fluent APIs in Java vs. C++
  C++ templates are incredibly expressive. For this reason, all C++ compilers may go fall into an infinite loop on some C++ programs. For many years, it was believed that Java is distinct than C++, i.e., Java generics are strictly weaker than those of C++, and Java compilers should be able to compile all Java programs. Recent discoveries refuted this belief. In this presentation, I will review research on the topic, and present a new result which gives rise to an implementation of a compiler-compiler (of the sort of YACC) within the Java type system.
A practical software-engineering application of the theory is the automatic generation of a library interface that enforces object protocols at compile time, and the embedding of domain-specific languages (such as SQL or the language of regular languages) within a host language (such as C++ or Java). For example, one can generate an interface by which RE.f1().f2().....fn() compiles if and only if f1...fn is a valid specification of a regular expression.
10:10 - 10:40  Keren Kalif (Afeka Academic College): When Students Write the Course's Project Description for their Classmates
  The talk is based on an OOP C++ course for students who have already learnt OOP in JAVA as their first language.
The students were asked to write the project's description, with some few requirements, and to code only the headers for their project. Each team implemented the actual cpp for another team. Students practiced how to code after someone else, and of course they have something to say about it. I will present the project's requirements, how they choose which project to work on, and what is the advantage having them write a story on their own.
10:40 - 11:20  Meet & Eat: Teaching C++ Social Brunch
11:20 - 11:50  Yechiel M. Kimchi (Technion): Teaching C++ as the first PL
  C++ is a wide and deep programming language. As a result, many professionals think that one needs some (or even good) programming experience in order to be able to effectively learn C++.
I beg to differ. I will present my experience of teaching C++ as the very first PL for students during their first semester in an academic institution. The one vivid immediate result was that the second semester (in which C++ is traditionally introduced) went much smoother and ended with students having a higher level of C++ knowledge.
The key point in my approach for the first semester was that I did not teach class programming, but rather how to use existing classes. For those who are raising their brows, I argue that I follow the OOD basic paradigm: Have your model simulate reality as best possible. Indeed, we all learn how to use tools before learning how to build those tools.
11:50 - 12:20  Meir Komar (Lev Academic Center): CS1 vs C++ - Higher Education or Hire Education?
  At the end of 2013 The Joint Task Force on Computing Curricula Association for Computing Machinery (ACM) IEEE Computer Society published a major revision of CS2001/2008 entitled Computer Science Curricula 2013. The report addresses major issues we, as CS educators and Higher Education in general are facing. One of them is that more and more prospective students are making decisions on where to study based on graduation rates and employability.
In this talk we will try to identify the key challenges that we are currently facing as well as the ones in the future with the advent of the Gen-Z student entering the gates of higher education.
12:20 - 12:40  Coffee Break
12:40 - 13:10  Shmuel Fine (AlgoPlumb Ltd): Recreating the C++ language together
  The C++ language has a strong grasp on both extremes of programming: It easily reaches both the high-level software design and the low level of touching the hardware. This is one of the reasons that make it difficult to teach C++, since in order to really feeling comfortable with it one should cover a lot of ground material.
I'll demonstrate my method of teaching - developing together with the students the C++ language, starting from the birth of digital computing and till modern C++.
13:10 - 13:30  Adam Segoli Schubert (Tel-Aviv University): Practical C++ for Juniors
  Teaching as a C++ TA at TA University I'll present in this talk a few insights into practical C++ teaching for juniors and ways to reinforce students' understanding of core C++ concepts.
13:30 - 14:00  Daniel Trugman (Palo Alto Networks): What are we looking for when hiring a C++ junior programmer
  This talk will focus on our use of C++ in actual industry environment, at Palo Alto Networks. What are we looking at while interviewing and what we expect students to know.
14:00 Farewell

Please note that the agenda may be subject to changes.

 

Website of the co-located event - Core C++ conference - May 14th-17th: https://corecpp.org

Location



The Academic College of Tel-Aviv-Yaffo

Public Transportation

The college is accessible by public buses and by train. The nearest train station is "Wolfson Station", within a walking distance of 15-20 minutes. This can be a good option for people arriving from a far distance like Netanya, Haifa, Kefar-Sabba etc.

Parking

Unfortunately we are not able to provide parking inside the college campus.
However, near the college there is a free parking lot (which gets full pretty quickly in the morning).
Then you also have city paid parking on the street, colored white-blue and usually paid via mobile app, no actual meter on the street, see:  city arranged paid parking.
If you are OK with walking a bit you may find some free spots on the street, e.g. if you put "Yaldei Teheran St, Tel Aviv-Yafo" on your GPS you will find there free parking with a walking distance of 12 minutes to the college, or even closer than that.

Organizing Committee



Amir Kirsh

Experienced C++ developer and R&D manager. Teaching C++ at the Academic College of Tel-Aviv-Yaffo since 1998.

Christopher Di Bella

Software Engineer on the ComputeCpp Runtime for Codeplay Software and a co-founding member of ISOCPP SG20.


Yehezkel Bernat

C++ developer at Microsoft.
Teaching Assistant in OOP and C++ at Hadassah Academic College Jerusalem.

Iris Gaber

Senior Lecturer at the Academic College of Tel-Aviv-Yaffo. Teaching CS since 1996 with research in CS education.