Courses in computer science curricula often involve group programming assignments. Instructors are required to take several decisions on assignment setup and monitoring, team formation policies, and grading systems. Group programming projects provide unique monitoring opportunities due to the availability of both product and process data, as well as challenges in team composition, with students of varying levels of prior programming experience. To gain insights into the experiences and perceptions of students about the assignment setup and grading policies in group programming projects, we interviewed 20 computer science students from four universities. The thematic analysis highlighted factors in group composition that are considered important, as well as advantages and disadvantages of the self-selection of the teams. It also indicated three grading strategies experienced by the students, namely, being assigned the same group grade, individual grades distributed by the instructor, and grade distribution determined by the team, with perceptions about them varying greatly. Several practices for monitoring team contributions were identified. Checking the source code repositories was considered useful in recognizing slacking members, but automated metrics are not always representative of the work distribution. The analysis also uncovered student perceptions on the grading factors for programming assignments, including coding efficiency and skill.