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.