Everyone:
Welcome to CSE 34872 Programming Challenges, which (as the syllabus states) is a "course that revolves around solving brain-teaser and puzzle-type problems that often appear in programming contests, online challenges, and job interviews". What this means is that we will be studying common data structures, algorithms, and programming techniques that are useful in tackling a variety of problems.
Additionally, this session we will also learn about different software development techniques such as debugging, testing, profiling, and packaging.
For this week, you familiarize yourself with using Zoom and Slack and then setup your GitLab assignments repository.
Last semester, many of you took the Data Structures course where you learned about the properties and characteristics of different data structures (and perhaps you even implemented a few). The focus of this class, however, is not in the construction of these data structures, but rather their application. This means we will focus on when to use these data structures and algorithms and how to utilize them effectively rather than what they are. In concrete terms, we will not be implementing say a hash table; instead we will use it to solve a variety of problems.
Following the Hands-On Imperative, you will have the opportunity to put the material we discuss in class into practice via numerous weekly programming challenges (three a week). Along with these challenges will be reading assignments to ensure you have a context or background knowledge for what we will be discussing in class. As with last semester in Systems Programming, the reading assignments will be automatically graded.
In fact all of your assignments will be automatically graded by dredd via the continuous integration system provided by GitLab. As you may experience in your internship this summer, testing is an important part of software engineering and we will therefore explore various aspects of software development including debugging, profiling, testing, packaging, and more throughout the course.
Although each class will involve some amount of lecture, there will also be a lot of in-class activities and hands-on learning. Because of this, participation is a component of your grade and you are expected to come to class regularly and on-time.
Fortunately, however, there are no exams in this class. Instead, we will have a final in-class programming contest where you will get to work in groups of 3 (similar to the ACM Programming Contest). Likewise, you will also have to participate in two external programming contests such as thos provided by HackerRank or LeetCode.
For all of our class meetings, we will be using Zoom to video conference. Before our first class meeting, make sure you can login to the Zoom system and access our meeting link:
You will need to signup and create a Zoom account if you don't already have one. We recommend that you use the Notre Dame Zoom login system.
You will need to download and install the Zoom client to perform video conferencing.
By default, you microphone will be muted. To speak, you will need to manually unmute it.
For communication outside of our meeting time, we will be using Slack,
specifically the #cse-34872-su19
channel:
There is a class mailing list, but most day-to-day communication (including office hours and homework help) should take place on Slack.
You will need to signup and create a Slack account if you don't already have one.
You can use the web interface or download the Slack desktop client (there are also mobile applications as well).
Feel free to join any other channels that may interest you.
All of your work will be submitted to GitLab using git. Your final task is to setup your GitLab repository by doing the following:
Sign-in or create a GitLab account if you do not already have one.
Fork the class assignments repository: CSE-34872-SU19-Assignments
Configure the Settings of your repository such that:
Under General > Project description (optional), record your name and netid.
Under Permissions > Project visibility, select Private.
Add the instructional staff to your repository:
Under Project members, select the Add member tab.
Under Project members > Select member to invite, enter in the following accounts:
Under Project members > Choose a role permission, select Maintainer.
Under Project members > Access expiration date, select
August 1, 2019 (2019-08-01
).
Once this is done, you can clone your git repository to your local machine:
$ git clone https://gitlab.com/$USERNAME/cse-34872-su19-assignments.git
Note: If you have not done so already, you should consider setting up SSH Keys on GitLab to enable password-less pushing and pulling.
You are responsible for ensuring that your GitLab assignments repository is in proper order, which means you have the correct settings and permissions set. Failure to properly configure your repository will adversely impact your grade.