Skip to main content

🎓 Coursework

Impactful coursework that have sharpened my skills and expanded my horizons in the realm of Software Engineering. From fundamental principles to advanced technologies, each course has been a stepping stone in my quest for knowledge and mastery in the field.

 

Harvard University's CS50x - Introduction to Computer Science​

CS50x is Harvard University's Introduction to the Intellectual Enterprises of Computer Science and the Art of Programming course. This course taught me how to solve problems, both with and without code, with an emphasis on correctness, design, and style. Topics include computational thinking, abstraction, algorithms, data structures, and computer science more generally. Problem sets were inspired by the arts, humanities, social sciences, and sciences. More than teaching how to program in one language, this course taught me how to program fundamentally and how to teach myself new languages ultimately. The course started with a traditional but omnipresent language C that underlies today’s newer languages, via which I learned not only about functions, variables, conditionals, loops, and more but also about how computers themselves work underneath the hood, memory, and all. The course then transitioned to Python, a higher-level language that I understood all the more because of C. Toward term’s end, the course introduced SQL, along with HTML, CSS, and JavaScript, via which I could create web and mobile apps alike. The course culminated in a final project.


Harvard University's CS50Web - Web Programming with Python and JavaScript​

CS50Web course picks up where CS50x leaves off, diving more deeply into the design and implementation of web apps with Python, JavaScript, and SQL using frameworks like Django, React, and Bootstrap. Topics included database design, scalability, security, and user experience. Through hands-on projects, learned to write and use APIs, create interactive UIs, and leverage cloud services like GitHub and Heroku. By semester’s end, emerged with knowledge and experience in principles, languages, and tools that empower them to design and deploy applications on the Internet.


Fundamentals of Network Engineering - Hussein Nasser​

Fundamentals of Network Engineering teaches Network Communication which is one of the most critical pieces in backend engineering. And the TCP/IP Internet suite is the basic fundemntal building block of communications that link the frontend to the backend. Any protocol we use eventually gets encapsulated into either a TCP segment or UDP datagram. That packet is wrapped in an IP packet which is placed into a frame and then sent across the network. These layers are important to understand for backend engineers in order to optimize the stack, minimize latency, and increase throughput. This course helps in true understanding of these pieces and not just memorizing definitions and packet headers to pass an exam.