The focus of this paper is on science students (CS minors) in a CS1 Java course at a technical university. The following three questions are discussed: 1) Which programming related topics the students at the target CS1 course find difficult to learn, and what is the difference between the students that passed the course and the students that dropped out of the course. 2) What kind of strategies both the passed and the dropout students used when they faced a difficult programming related topic. 3) Why some students decided to drop out of the course.The research questions are tackled with a quantitative approach. 459 students that passed the CS1 course and 119 dropout students answered the questionnaire. The most difficult topics to learn were finding runtime errors and planning one's own code. Inheritance & abstract classes, and handling files were also regarded as difficult topics. The open-ended question in the questionnaire revealed six viable strategies the students used when they faced difficult topics. The factor analysis elicited five dropout reasons: course arrangements, difficulty to understand course topics, time management and preferences, lack of consequences of dropping out, and effect of other courses.The results are discussed in the light of the general system theory that highlights the multi-dimensionality of the dropout phenomenon.