How do we develop software that solves problems efficiently and reliably? How do we write programs that work correctly and can be refactored and improved over time? This course continues and expands on content from Computer Science I, with a greater focus on theoretical concepts, abstraction, and larger programs. Topics include object-oriented programming, unit testing and refactoring, basic algorithm analysis, searching and sorting, linear data structures (lists, maps, stacks, and queues), trees, and graphs.

offering time

Spring 23


Computer Science


Thanh-Trung Phan



Course code


Discover the future awaiting
you at Fulbright

Learn how to apply

This site uses cookies to provide a better user experience.

Essential cookies are active by default and are necessary for the proper functioning of the website. Analytics cookies gather anonymous information for us to enhance and monitor the site. Performance cookies are employed by third parties to optimize their applications (such as videos and maps) that are embedded within our website. To accept all cookies, click 'I accept.' Alternatively, choose your preferences for analytics and performance cookies, then select 'Close cookie control.'