For introductory functional programming as taught in CS1101S, the following two MOOCs (which you can audit for free) would cover the same syllabus (with some additional concepts but lesser practice as compared to CS1101S):
- Programming Languages, Part A
- Programming Languages, Part B
The two courses are really well taught and emphasise greatly on designing good abstractions and communicating computational process through clear and concise code. As such, I think it conveys the ideas from CS1101S really well while complementing CS2030S by training you to be more thoughtful about the way you reason about and design your abstractions.
While the language taught in Part A is mainly used in formal verification and compiler related use cases, you can easily segue to something like OCaml which is a lot more general purpose. If you want to dive deeper into FP or topics tangent to FP, you might want to look at Haskell (it also further generalises the idea of a functor and monad that you picked up in CS2030).
With respect to CS2100, I think it's fine for you to take it right away; as far as the programming aspect is concerned, you'll be dealing with trivial C or assembly programs. CS2100 is mostly hard work and due diligence; pay attention to lectures and do all your tutorials and practices conscientiously. Be well prepared for the exams too (especially if it's still online) with tools and programs to optimise on the time spent, the paper is generally not completable (that's the sentiment for my batch if I'm not wrong).
Hope it helps and all the best for school!