"-다 싶다 하다"
"... 싶다" means 생각하다 or 느끼다 (have an impression / think / feel), but has a more direct sense than those others.
It can vary in form, so -다 싶다 하다 is just one of many possibilities, and not the most efficient way of saying it either, as it has multiple levels of a noun clause.
For example the first sentence can be broken down like this:
- 숙제를 잘한다: she does great homework (the impression/thought itself)
- 숙제를 잘한다 싶다: I had the impression that he does ...
- 숙제를 잘한다 싶다 했는데: I had/got the impression that ... but ...
(하다 here means "thought" or "had an impression" - a second level of indirection)
The sentence can be simplified as 숙제를 잘한다 싶었는데 without losing any information.
This is like "I thought she did good homework but it turned out her sister did it for her"(simplified) versus "After I formed the impression that she did good homework it turned out her sister did it for her" (original).
The second sentence is long winded too.
- 아이가 조용하다 싶다 하고 보니 이렇게 사고를 냈군요. ("싶다 하고 보니" is convoluted)
=> I had formed the impression that the boy was calm but then he caused this mishap.
It can be simplified as:
- 아이가 조용하다 싶었는데 이렇게 사고를 냈군요.
=> I thought the boy was calm but then he caused this mishap.
And yes, you can also use 싶다 with +이다.
- 우리 아이가 제일이다 싶었는데 더 잘하는 아이가 있었다.
=> I thought my boy was the best but there was a kid who was ever better.