Snow-capped mountains
« All Posts by this Blogger
a photo of Kalina's grumpy black and white cat Luna sitting next to Kalina's open computer showing the CS 52 website home page

One of the most popular classes in the Computer Science department at Dartmouth is CS 52: Full-Stack Web Development, taught by Professor Tim Tregubov (you can check out the class's website page here). Web development is a trendy field, and the class helps you master both the front-end (client) and back-end (server) side of the process (that's why it's called full-stack); this is just one of the reasons why it's so popular. Professor Tregubov has created a class that leans on creativity, on both student and instructor side: students are given a lot of creative freedom to pursue projects they care about and build skills while building something meaningful, while the class has a custom website, a number of supportive TAs, and the lectures follow a story-telling format that puts everything we learn into context and "historical" perspective (though, can you really call it "historical" if everything in tech changes so fast?). We learned how developers at many big companies solved problems and came up with the tools we use today, and discussed the importance of learning to think like a (software) architect in the age of artificial intelligence.

It's no surprise that the class is so popular—there's a long wait-list and class spots fill as soon as they open up. I was really fortunate to get to be in the spring cohort of CS 52. During the first round of class selection (which happens the term before you take the class), half of the people who get into the class are chosen from the wait-list; the other half are randomly chosen by the registrar's algorithm. I was one of those randomly chosen students—and I wasn't even a declared CS major yet. (Dartmouth students can officially declare their majors during their sophomore winter.) I was extremely lucky to get in.

The first milestone students reach in the class is learning how to write HTML (HyperText Markup Language), which determines the structure of the webpage, and CSS (Cascading Style Sheets), which determines the style of the webpage. Everyone created a static page (you can just look at it; there's no functionality like buttons or links) and learned how much time goes into fidgeting with the design of web-page components.

The next milestone was learning to incorporate JavaScript (the language that makes websites responsive and interactive). We had to build our own BuzzFeed quiz that a user can take and learn what kind of coffee they like—or what kind of protagonist in a book they'd be.

We learned to use React — a JavaScript library that allows you to keep track of what component in your website changed (someone clicked a button!) and helps you organize components and the interactions between them (when this button is clicked, this happens). And we learned how to use many other libraries that allow you to easily send information from the front-end (client) side of the website to the back-end (server) and retrieve information from the backend.

After completing two labs (big assignments in some CS classes are called labs) that walked us through building the front-end and back-end of a website that allows users to create, read, update, and delete information from the website (a.k.a CRUD functionalities), we split into groups to work on a final project.


a screenshot of Kalina's team cs52 project, lessonlink, the dashboard shows lesson tiles, folders to the left, and a profile icon on top
The dashboard view of our platform LessonLink, where teachers can write lessons, make them public (viewable by anyone on the platform), and "remix" other teachers' lessons if they get inspired.

The final project was introduced in the very first weeks of the term to allow students enough time to think about an idea (what problem would they want to solve), form a team, refine the idea with their team, pivot if needed, and build a product. After the ideas were pitched, students voted for which idea they wanted to work, and teams were formed.

My team worked toward building a platform for teachers to create and share their lesson plans (like a social media for teachers) while having access to the state standards for the specific grade they teach.

First, we drew our designs on paper. Then we moved on to Figma (a web tool for website design). Some team members set up the front-end; others worked on the back-end. Everything was synchronized on GitHub (a website for open-source code and collaboration), and in just a couple of weeks, we had a functioning website that we presented at Technigala, an event where all CS and engineering students share their work and products.

Posts You Might Like