Within my first couple semesters at Stevens, I was surprised by the lack of tools to automate schedule building. I thought there had to be a better way to plan my courses than making countless lists on paper or in spreadsheets. The issue was, there wasn’t. That was when I realized I could make one—not only could I tackle the limitations I was encountering with aging tools, but I could get experience in building a website others could benefit from, too. That year, in Spring 2019, I started my journey of developing DuckScheduler, a website that generates custom college schedules. I picked up the project again in Fall 2019, which is when I had my first beta and the word got out. The next semester was dedicated to improving the site and deriving a business model for sustainable growth and scalability to other schools.
The process of using DuckScheduler goes like this: (1) you select the courses you wish to take, and the site will generate up to 100 possible schedules by testing all the course sections combinations for you, (2) you add filters like work or sports practice hours, as well as set preferences like the time of day of your classes or how spread out they are, and (3) DuckScheduler takes all those needs into consideration, and you pick the schedule you like best. From there, there are countless aesthetic customizations you can make from changing the colors of courses, bookmarking classes, or adding your own nicknames for them. Once your schedule is exactly how you like it, you choose from a variety of export options, including as an image, calendar file, or Google Calendar with your permission.
The latest major feature I have implemented in DuckScheduler is the class notification system. Semester after semester, registration week is filled with stress over courses filling up, getting signatures from professors, not getting that PE class you wanted, etc. Some universities offer waitlists for when your classes fill up, but since Stevens currently does not, I created a system that will send you push notifications when a seat in a class you are tracking opens up.
Here at Stevens, we hear lots of debate over student centricity, and part of that comes from our beloved Self Services on MyStevens. With the Software Engineering Club, we attempted to solve part of this issue by creating a Stevens Chrome Extension to serve as a ‘student hub,’ but development for that slowed down due to scope and delegation issues. Outdated student services seems to be an almost universal issue for college students, though, not just here. I have already expanded DuckScheduler to be running at nine other East Coast schools, and across the board, the first reaction is always, “Why did this not exist already?”
Schools are much slower to adapt new systems because they are hesitant to invest in their technical infrastructure, have poor system architecture that make such migrations difficult, and probably do not truly understand the needs or concerns from a student perspective. Additionally, it’s difficult for existing companies to standardize the process across many schools, so we end up seeing fragmented services that are tailored to individuals school but do not always make the experience substantially better. The ultimate goal of DuckScheduler is to expand to a point large enough where pressure from myself and companies offering solutions for related issues lead schools to make change in the long run.
On a personal level, DuckScheduler has been quite the learning experience. I can easily say it has taught me more than any other single project or class, since it has been going for several years now. I write DuckScheduler’s front-end in Vue and the back-end in Golang (though it was originally in Python). The data for course information is scraped from public course listings and parsed and formatted according to the specifications of DuckScheduler’s internal API. Through all of this, I have learned how to maintain a large scale codebase, especially one that can be understood by others. I have disciplined myself to establish and stick to strict regulations and style guidelines.
When I say I have learned a lot, I do not just mean just from a web development perspective. I have improved my abilities to survey users, assess alternative third parties for payment processing, hosting, etc., and market software as a service. In fact, as a business and technology major, this experience has set in stone my skills with regards to turning an idea into something tangible, and I feel comfortable going into Senior Design next year.
I now have two high school interns that I mentor under this project, and the most valuable insight I can share with them is how to run with an idea. I am always an advocate for hands-on learning, and this is something I am working hard to offer my interns. You just have to take an idea, no matter how difficult it seems in the beginning, and start researching. Most of development time should be spent learning in the beginning – I think this overwhelms a lot of people who want to see results immediately. You can compare it to working out at the gym. If you go in with a mentality that you’re going to meet an unrealistic goal in a week, you’re only going to be shutdown by the time you did not spend learning how to achieve and reach your goals.
There probably is not a single student at Stevens that would say they have not noticed possible improvements for the scheduling process, but what I have done differently is create and offer a solution. I encourage anyone reading this tackle whatever challenges they are facing in and outside of Stevens, whether it is related to joining Zoom meetings on time, checking Canvas for assignments, or even non-software related issues like designing ways to measure how many people are in one location using network traffic and systems to reach your destinations using social distancing. Really, just take something you see as helping someone or something you’re passionate about, and there’s always something you can do to make it better.
Be First to Comment