Java or Kotlin for beginners (procedural programming knowledge is existing)? We are teaching an "introduction to cs" course (bachelor level) and in the first half of a year students are learning the fundamental principles of procedural languages. We are using python 3 and C as exemplary languages for this part. 

Up until now, I moved on to C++ and the object oriented part of python 3 in the second half of the year to demonstrate object oriented languages. 

Java is currently tought in the third semester.

All three languages will be needed by the students later on, so the pros and cons of C, C++ and python 3 are not part of the question...

Now we decided to start introducing Java one semester earlier instead of C++. 

While we were discussion the course design I joked "why don't we just skip Java and move to Kotlin", and since I had this idea I'm really considering it. 

Do you already have experiences with Kotlin in teaching? Would you consider replacing Java entirely by Kotlin? Or would you just mention its existence?
Any pros and cons? How about GUI design etc. (I used qt in the old course)?

Our students might develop smartphone apps as well as webservices in those languages.
I've been using Kotlin for two years now on an introductory course on imperative programming (bachelor's first semester) and I'm very happy with this decision. Before Kotlin, I was using Java for the same course.

Here are some of the benefits:


No need to explain what are classes on a imperative programming course, since Kotlin programs can only have a main() top level function (like C)
It is a "safe" language in the sense that it prevents most novice mistakes at compilation time (uninitialised variables, type conversion errors, etc.) 
For simple interactive programs (e.g., ask two numbers and compute their sum), you don't need all the complexity of the Scanner/BufferedReader classes, just use readLine() and println() (without the System.out). This makes the initial learning curve much more pleasant.
It forces the students to think about the little things that are essential when you are taking the first steps in programming: mutable vs immutable variables, nullable vs non nullable types, mandatory variable initialisation, implicit vs explicit types, conditions as expressions, etc...
It is easy to jump to Java in later courses (than say Python or Javascript)


Most of all, from my experience students find it more motivating to learn to program in Kotlin than Java, since they have to write less to accomplish the same things while at the same time feeling protected about runtime errors.

My advice: go for Kotlin.