A great deal of time and effort have been focused on answering the question of what approach is "best" for teaching Computer Science 1 (CS1). Clearly, the question has significance due to the consequences of teaching the course poorly-losing talented students, lowered levels of learning, less diversity among CS majors, even the possibility of losing faculty who dislike teaching a poorly designed course. This paper presents an innovative approach based in human learning theory which uses multiple languages (Java and Python) to teach fundamental concepts of writing algorithms to novices. An experiment was designed and conducted to judge the effectiveness of the approach, and the results are discussed.
ACM hosts an annual student programming contest [1]. Contests are also offered regularly by several conferences [2], student organizations, and professional societies [3]. Although specific organizational features vary, there are common requirements for organizers and host sites to be aware of. This panel discussion will address computing and infrastructure requirements, developing contest problems, scoring and judging issues, organizational and technical challenges, and how much pizza and soda it takes to keep several teams of student programmers functioning. Confirmed panel members have each been site director for an ACM or conference-based programming contest.
Increasing retention of students in computer science-particularly in the first course-is a frequently studied and much discussed topic in the discipline. This paper presents a multi-faceted approach which is practical and which can be generalized to small college settings. In particular, the authors describe strategies for building a sense of community among the students, increasing opportunities for programming practice and success, adopting a high-quality supporting software set, and making use of motivating assignments. As a result, 95% of students (128 of 134) who began the course in the fall semester for the years 2005--2009 persisted to the point of receiving a final grade.