Software Engineering 2FA3 is the second semester part II to SFWR ENG 2DM3. Rather than 2DM3, which was more about the theory, 2FA3 is more about application of discrete mathematics to designing solid mathematically correct software.
Unlike most courses, this course starts out a little difficult, and then gets easy (it's even fun!).
The first thing learned is the very heavy math stuff - axioms. It's basically an extension of the stuff learned at the beginning of 2DM3. The axioms covered are mostly quantification axioms, which are useful for describing programs. Popular ones covered include the trading rule, range-split axiom and everything to do with FOR ALL and THERE EXISTS. Also differences between models, theories and formulas.
After that it moves on to mathematical induction (presented in a much easier-to-follow way than in 2DM3), some more set theory, well-foundedness, and then finally into mathematically writing a program using the hoare-triple layout. None of it is too difficult, but writing programs (especially with decisions and loops) has a steep learning curve. Once you get over that though, it's not too bad. Oh, and these programs aren't programs on a computer; they're equations. This course has no actual programming (aside from some bonus assignments).
Once that's all out of the way, the fun part comes - finite state automata, push down automata, pattern matching, and a brief touch on turing machines. Finite state automata is overlap with 2DA4, so they're not difficult to understand (it also overlaps with 2AA4 and 2MX3 a bit). Pushdown automata are not as intuitive... but also not too hard to follow.
The assignments are actually pretty fun for this stuff cause you get to be creative and design machines
.
Anyway, the course breakdown is as follows:
Assignments 40% (10% each)
Midterm 20%
Final 40%
The first two assignments weren't too bad, but required a lot of thought. The last two were relatively easy. The midterm also wasn't too bad, but make sure you study hard for it.
The professor for this class is Dr. Ridha Khedri, and he's really good. All his slides are very organized and follow the book in such a way that it isn't just a rehash. One important thing you should know though is that Dr. Khedri isn't the kind of person you want to push around. If you are polite and respectful in his class, he'll respect you.
The exam (at least for my year) was very easy, that is, if you went to ALL classes and did ALL the assignments. The questions came directly from on the board examples and from the assignments.
Also, if you're good at programming, Dr. Khedri tends to give out small bonus assignments (i.e. make a simple program that can recognize patterns) every so often. They're usually worth an extra mark or two on the assignment or the midterm, so they're worth doing if you have time.
Good luck!