Talks
Ruby in the Computer Science Classroom
Summarized using AI

Ruby in the Computer Science Classroom

by James W. McGuffee

The video titled "Ruby in the Computer Science Classroom" by James W. McGuffee, an associate professor at St. Edward's University, explores the integration of the Ruby programming language into computer science education. McGuffee discusses the structure of the computer science program at his university, which offers three distinct degrees: a Bachelor of Science in Computer Science, a Bachelor of Arts in Computer Science, and a Bachelor of Arts in Computer Information Science. He emphasizes the importance of hands-on learning experiences in his teaching approach, particularly in the course Computer Science 3335, which serves as an alternative to Data Structures for Computer Information Science majors.

Key Points:
- Degree Programs: The university offers three types of degrees, catering to different interests and educational backgrounds.
- Focus on Ruby: McGuffee chose Ruby for his Computer Science 3335 course due to its simplicity and effectiveness in engaging students with programming concepts.
- Hands-On Learning: He stresses the significance of giving students practical assignments that facilitate active learning rather than passive lecture-based learning.
- Unique Assignments: Examples of assignments include simulating prefix order functions, creating word count finders, parsing HTML documents, and developing a spelling corrector using creative themes like 'Britney Spears'.
- Cryptography Interest: Students enjoy tackling cryptography concepts and implementing simple ciphers, showcasing Ruby's utility in problem-solving scenarios.
- Challenges for Ruby Community: McGuffee encourages discussions within the Ruby community to explore its strengths and applications in academia, advocating for its inclusion in various curricula.
- Value of Internships: He highlights the need for mentorship and intern opportunities in businesses, noting that internships can benefit both students and companies.
- Diverse Student Demographics: The course attracts a broad age range of students, showing that even younger students can become engaged with programming through enjoyable projects.

In conclusion, McGuffee calls for collaboration between the Ruby community and educational institutions to refine programming education. He invites anyone interested in connecting for mentorship or internship opportunities to reach out, emphasizing the importance of nurturing talent in the field of computer science.

00:00:06.240 Video equipment rental costs were paid for by Peep Code Screencasts.
00:00:21.439 All right, I'm your first speaker after lunch for this lightning session. My name is James W. McGuffee and I am an associate professor of computer science at St. Edward's University. St. Edward's is a private liberal arts school in South Austin, founded by the same priest who founded Notre Dame. If you're not familiar with our background, we have been ranked by U.S. News and World Report as one of America's best colleges. Even though we are a liberal arts school, we do have a computer science program.
00:00:40.680 In fact, within our department, which is in the School of Natural Sciences, we offer three degrees. The first is a Bachelor of Science in Computer Science, which includes a traditional CS core and emphasizes laboratory experimental science and advanced mathematics courses, such as linear algebra and a third calculus course, among others. The second degree is a Bachelor of Arts in Computer Science, which removes some of the advanced mathematics courses and science requirements, allowing students the freedom to mold a minor or explore other interests in their education. Finally, we have a unique program called a Bachelor of Arts in Computer Information Science, which is similar to the Bachelor of Arts in Computer Science but with two major differences: there is a prescribed set of business courses and some alternate courses compared to the traditional CS curriculum.
00:01:18.840 The main course I want to highlight is Computer Science 3335, which serves as an alternative to Data Structures. Our CS majors take Data Structures, while our CIS majors take this course. I found this course to be quite unusual, and coincidentally, it was a class that nobody particularly wanted to teach. In 2003, I was the last person to decline, so I ended up teaching it. The department made a mistake by saying that if I taught the course, I could do whatever I wanted. So, I thought about how to make this course engaging, focusing on topics like data file systems.
00:02:00.360 I have a nice partnership with EMC, providing material on RAID systems and data storage, which are very useful. However, I believe getting students hands-on experience with programming and using machines is crucial. Therefore, I chose Ruby for my Computer Science 3335 course. The programming assignments revolve around the theme of file management, primarily dealing with data files to help students learn about certain skills. In their first six hours of programming, our students primarily learn Java, and while I don't think that's the best choice, it's a reality since it's the language used in the AP exam.
00:02:26.879 In my course, I did not have to formally teach Ruby. Instead, I pointed my students to resources and allowed them to explore. The first assignment asked them to simulate a prefix order function calculator, which helped them familiarize themselves with the syntax and environment. They then worked with strings, creating word count finders and parsing HTML documents. This involved identifying markup elements and data parts within the document.
00:02:59.220 One interesting assignment was a spelling corrector based on the misspellings of 'Britney Spears.' I assigned students to write a regular expression that would catch all the misspellings without matching other words. I created a file that included Google's misspellings and other words to evaluate how accurately their programs identified the misspellings. The results varied significantly, with some students creating very precise expressions while others were overly simplistic in their approach.
00:03:34.740 Moreover, hands-on activities are essential for students to gain real experience instead of just being lectured to. We also have done an assorted word frequency count on large documents, and since works like Paradise Lost are in the public domain, it allowed students to work with sizeable data sets effectively using Ruby without any sluggishness.
00:03:58.560 Additionally, students find cryptography concepts fascinating. They have enjoyed tasks such as implementing simple Caesar Ciphers and general substitution methods while using Ruby tools. Ruby has proven beneficial for encouraging students to engage in problem-solving rather than getting bogged down with language complexities. The language helps facilitate their learning experience. As my time is limited, I would like to share some challenges the Ruby community could address, which would be helpful for academia.
00:06:07.080 One challenge is identifying applications where Ruby is the best choice. There's often a debate in academia about which programming language should be taught first, and I believe that's a false argument. Assuming a student completing a computing degree should only learn one language is quite silly. It's essential for graduates to be well-rounded and proficient in various languages. Therefore, whatever language universities choose as the first language, we should consider the case for including Ruby in upper-division courses and what tools should be integrated into the curriculum.
00:07:36.780 I encourage dialogue within the Ruby community to identify where Ruby truly excels. Furthermore, I am always looking for opportunities to connect with businesses willing to provide mentorship and internship opportunities for my students. Interns add value and typically don't require health benefits, making them cost-effective for businesses. We must continue nurturing young talent and witness the joy seen at conferences, where everyone is passionate about their work.
00:08:04.039 In conclusion, if anyone is interested in reaching out to me, I welcome inquiries. I have a moment for questions before my time runs out.
00:08:59.880 In response to a question about mentoring, it does not have to be face-to-face. We encourage internships that also provide students with compensation. Mentoring can be effective through open-source projects, allowing students to work on specific components within a semester. Addressing another inquiry about our student demographics, we typically have students aged 18 to 22, but I have taught younger students as young as eight years old. With the right motivation, such as developing a video game in Ruby, they can stay engaged and focused.
00:10:01.260 Lastly, concerning the landscape of CS programs across different institutions, many programs remain resistant to change, predominantly focusing on Java as the first language. Functional programming languages like Haskell and Scheme follow as alternatives. Thank you very much for your time.
Explore all talks recorded at LoneStarRuby Conf 2008
+18