Assignment 1: Hello Kotlin and Getting to Know You
A Note on Assignment Scope
In general, you will be spending about 8 hours a week on homework for this class. The first assignment, is on the lighter side, but you should still be spending at least 6 hours on it. If you finish this assignment in less than 6 hours, please consider one of the following additional activities.
- Do some problems from Advent of Code in Kotlin (note: there is a link on the useful resources page to a walkthrough of these problems).
- Expand the scope of the “translating old code to Kotlin” part of the assignment.
- In the “Hello Kotlin” part of the assignment, try importing a dependency and using it in your code (the Setting up Kotlin section has some information on this).
Course Entry Survey
Please fill this out. I want to get a better sense for what you are hoping to get out of this course, what your background is, and how I can make this course work well for you.
Identifying Effective Strategies for Learning
When embarking on a course, it’s important to strategize about how to get the most out of the experience. One might focus on how to get the best grade, but I invite you to consider the task of trying to learn as much as possible as being the primary objective (and other rewards will follow from this goal).
Respond to the following prompts to get you thinking about your approach to learning in this course.
- Choose a moment in your educational career (it could be an assignment or a full course) where learning went really well. What strategies did you employ that worked particularly well (e.g., working with others, trying work on your own before asking a friend, going to office hours)?
- Similar to (1), which sorts of strategies have led to either less effective learning or less enjoyment of the learning experience. Feel free to describe a few examples of what doesn’t work for you.
- As this course is foundational for many aspects of computer science, the problems in this class can be easily solved with modern AI systems (e.g., ChatGPT, Gemini, etc.). One of my foundational assumptions is the process of grappling with a problem helps you internalize the important concepts, gives you more insight into how the tools you are learning can be applied in other contexts, helps you more realistically assess your own abilities, and helps you learn to better communicate your knowledge to others. Particular methods of using AI (e.g., prompting the AI to provide answers to questions and thoughtlessly copying the answers) are unlikely to achieve the learning goals articulated previously. Do you agree with this framing? How are you thinking about AI tools with respect to this course?
- What strategies will you use in this course to be successful? With respect to AI, what principles or strategies will you use during this course.
- What do you think of some of the proposed activities for the oral quizzes? Are these activities ones that would give you helpful feedback as to how you are performing with respect to the course material? Would you add or subtract any of the proposed activities?
- How can the teaching team support you?
Hello Kotlin!
Read the section on the website about Getting Set with Kotlin.
Go through the Kotlin tour (you only need to do the beginner Kotlin tour). Make sure to attempt all the exercises in the tour.
- What features do you like about Kotlin?
- Are there things you were expecting to find that you haven’t?
- What questions do you have?
- Try using the debugger (see the Getting Set with Kotlin page) for some very basic information on the debugger. Do you have experience using interactive debuggers like this one? Were you able to successfully launch the debugger?
Turning in your work: You don’t have to turn in the code you write for the tour. Please let me know that you did indeed finish the tour and turn in your answers to the questions above.
Translating Your Old Code to Kotlin
Choose a piece of code that you’ve written in a programming language other than Kotlin. Translate the code to run in Kotlin. For simplicity, you may want to choose some code that will not require interacting with a lot of external libraries (although the course how-to discusses how to add dependencies to your project)
The code you produce should be documented and contain at least some unit tests.
Turning in your work: Include a link to a GitHub repo containing your port of the code. Include a writeup that describes the purpose of the code and how you found the process of translating the code to Kotlin (the good, the bad, and the ugly).