Non-determinism is one of the most important, yet abstract, recurring concepts of Computer Science. It plays an important role in Computer Science areas such as formal language theory, computability theory, distributed computing, and operating systems. We conducted a series of studies on the perception of non-determinism. In the current research, we studied and analyzed undergraduate Computer Science students' solutions to assignments in a course on automata and formal languages. Our findings shed some light on students' perceptions of non-determinism, their tendency to use non-determinism, and the characteristics of their non-deterministic solutions. This paper describes the current research and its results, and suggests several teaching applications.